알고리즘

Special Sort(구글 인터뷰)

살다보니개발자 2022. 12. 18. 18:09

N개의 정수가 입력되면 당신은 입력된 값을 정렬해야 한다.
음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다. 또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다.

 

 

 

입력예제

1 2 3 -3 -2 5 6 -6

 

 

출력예제

-3 -2 -6 1 2 3 5 6

 

 

 

풀이

 

function solution(arr) {

    // answer에 arr 얕은복사 , arr 값이 바뀌면 answer 도 바뀜.
    let answer = arr;

    // 기존의 버블정렬 형태로 이중 for문 실행, 맨마지막 인덱스는 비교할 인덱스가 없으니 arr.length - 1 까지만 For문 실행
    for (let i = 0; i < arr.length - 1; i++) {

        //버블 정렬의 형태기 때문에 마찬가지로
        // 비교가 완료된 맨마지막 index 는 비교할 필요가 없기 때문에 arr.length - i - 1; 까지 For문을 실행한다.
        for (let j = 0; j < arr.length - i - 1; j++) {

            // 앞에있는 인덱스 arr[j]  가 양수이고 , 뒤에있는 인덱스 arr[j + 1] 가 음수일때
            if (arr[j] > 0 && arr[j + 1] < 0) {

                // 서로의 위치를 바꾼다.
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
            }
        }
    }
    return answer;
}

let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));

 

'알고리즘' 카테고리의 다른 글

Least Recently Used(LRU) 카카오 캐시 문제 변형  (4) 2023.01.10
삽입정렬  (0) 2022.12.22
버블정렬  (0) 2022.12.15
선택정렬  (0) 2022.12.13
교육과정설계(큐)  (0) 2022.12.12