728x90
반응형
힌트
더보기
- 절대값을 기준으로 정렬한 후 동일한 값이 존재한다면 더 큰 수를 앞으로 이동시킨다
- OrderBy는 오름차순 OrderByDescending은 내림차순
-TehnByDescending은 요소의 내림차순이다
정답
더보기
방법 1
return numlist.OrderBy(x=>Math.Abs(x-n)).ThenByDescending(x => x).ToArray();
방법 2
var list = numlist.OrderBy(x=>Math.Abs(x-n)).ToArray();
int[] gaplist = new int[numlist.Length];
for(int i = 0; i < numlist.Length; i++){
numlist[i] = list[i];
gaplist[i] = Math.Abs(list[i]-n);
}
for(int i = 0; i < numlist.Length; i++){
for(int j=i+1; j < gaplist.Length; j++){
if(gaplist[j]==gaplist[i] && numlist[j] > numlist[i]){
int tempValue=numlist[j];
numlist[j] = numlist[i];
numlist[i]=tempValue;
}
}
}
Console.WriteLine(string.Join(",", numlist));
return numlist;
해석
더보기
방법 1은 힌트의 내용을 그대로 코드로 표현한 것이다.
var list = numlist.OrderBy(x=>Math.Abs(x-n)).ToArray();
nullist의 수를 n과 뺀 절대값 오름차순으로 정렬한 값을 저장한다
int[] gaplist = new int[numlist.Length];
for(int i = 0; i < numlist.Length; i++){
numlist[i] = list[i];
gaplist[i] = Math.Abs(list[i]-n);
}
numlist에는 오름차순한 수를, gaplist에는 절대값을 저장한다
if(gaplist[j]==gaplist[i] && numlist[j] > numlist[i]){
int tempValue=numlist[j];
numlist[j] = numlist[i];
numlist[i]=tempValue;
}
절대값이 같고 수가 nullist더 클 때(j는 1부터 시작 예) numlist[1]>numlist[0]) 순서를 바꾼다
728x90
반응형
'C#' 카테고리의 다른 글
[프로그래머스 힌트/답/해석] 다음에 올 숫자 (0) | 2024.01.30 |
---|---|
[프로그래머스 힌트/답/해석] 다항식 더하기 (0) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 문자열 밀기 (0) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 저주의 숫자 3 (1) | 2024.01.30 |
[프로그래머스 힌트/답/해석] 유한소수 판별하기 (0) | 2024.01.30 |