문제
선생님은 반 학생들에게 반 번호를 정해 주기 위해 반 학생들을 키가 가장 작은 학 생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까 지 부여합니다. 현수는 짝꿍보다 키가 큽니다. 그런데 현수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니 다. 현수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 현수가 받은 번호와 현수 짝꿍이 받은 번호를 차례로 출력하세요.
풀이
function solution(arr) {
let answer = [];
let sortArr = arr.slice();
sortArr.sort((a, b) => a - b);
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== sortArr[i]) answer.push(i + 1);
}
return answer;
}
let arr = [120, 125, 152, 130, 135, 135, 143, 127, 160];
console.log(solution(arr));
정렬되어있던 것에서 현수하고 짝꿍만 자리를 바꾼 상태이므로, 다시 오름차순으로 정렬하고 달라진 인덱스 부분을 찾으면 된다. 인덱스는 0부터 시작하므로 answer배열에 push할때 1을 더해줘야한다.
sort를 하면 자동으로 문자열로 변환되므로 숫자형태를 기준으로 정렬하기 위해 sort할 때 위 코드처럼 처리해줘야한다.
'코딩테스트 문제풀이 > inflearn' 카테고리의 다른 글
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 8. 회의실 배정 (0) | 2023.02.15 |
---|---|
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 7. 좌표정렬 (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 5. Least Recently Used(카카오 캐시 문제 변형) (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 4. 삽입정렬 (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 3. Special Sort(구글 인터뷰) (0) | 2023.02.15 |