35.Special sort - 정렬
Updated:
Special Sort (구글 인터뷰)
🔍 문제
N개의 정수가 입력되면 당신은 입력된 값을 정렬해야 한다.
음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다.
또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다
🔹 입력설명
첫 번째 줄에 정수 N(5<=N<=100)이 주어지고, 그 다음 줄부터 음수를 포함한 정수가 주어진다. 숫자 0은 입력되지 않는다
🔹 출력 설명
정렬된 결과를 출력한다.
🔹 입력예제 1
8
1 2 3 -3 -2 5 6 -6
🔹 출력 예제 1
-3 -2 -6 1 2 3 5 6
📌 풀이
- 풀이 1: 버블정렬
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
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));
</script>
</body>
- 풀이 2: for loop 에서 먼저 음수, 양수 선별해서 push 하기
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(arr) {
let answer = []; // 새로운 arr 할당
for (let x of arr) {
// x 개씩 탐색해서
if (x < 0) answer.push(x); // 음수일 경우 하나씩 answer 에 push
}
for (let x of arr) {
if (x > 0) answer.push(x); // 나머지 숫자 (양수) answer 에 push
}
return answer;
}
let arr = [1, 2, 3, -3, -2, 5, 6, -6];
console.log(solution(arr));
</script>
</body>
Leave a comment