본문 바로가기
CodeSignal

Sort by Height

by Doromi 2023. 12. 2.
728x90
반응형
주어진 배열 a에서 값이 -1이 아닌 요소들을 오름차순으로 정렬하되, -1인 요소들은 원래 위치에 그대로 남겨두어야 하는 문제입니다.

예를 들어, 주어진 배열이 [-1, 150, 190, 170, -1, -1, 160, 180]인 경우, -1이 아닌 숫자들을 오름차순으로 정렬하면 [150, 160, 170, 180, 190]이 됩니다. 이제 이 숫자들을 원래 배열의 -1이 아닌 위치에 삽입해야 합니다. 따라서 결과적으로는 [-1, 150, 160, 170, -1, -1, 180, 190]이 되어야 합니다.

이러한 문제를 해결하기 위해서는 다음과 같은 과정을 거칩니다:

배열에서 -1이 아닌 숫자들을 추출하고 정렬합니다.
원래 배열의 각 위치에 -1이 아닌 숫자들을 순서대로 삽입합니다.

 

int[] solution(int[] a) {
    List<int> withoutTree = a.Where(x => x != -1).OrderBy(x => x).ToList();
    int idx = 0;
    for(int i = 0;i<a.Length;i++){
        if(a[i] != -1){
            a[i] = withoutTree[idx++];
        }
    }
    return a;
}

 

LINQ를 사용하여 -1이 아닌 숫자들을 추출하고 정렬한 후, 
이를 원래 배열에 삽입하는 방식으로 문제를 해결합니다.

 

728x90
반응형

'CodeSignal' 카테고리의 다른 글

reverseInParentheses  (0) 2023.12.03
alternating Sums  (2) 2023.12.03
isLucky  (0) 2023.12.01
commonCharacterCount  (0) 2023.11.28
All Longest Strings  (0) 2023.11.27