새 학기가 시작되었습니다. 현수는 새 짝꿍을 만나 너무 신이 났습니다.
현수네 반에는 N명의 학생들이 있습니다.
선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학 생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까 지 부여합니다. 현수는 짝꿍보다 키가 큽니다. 그런데 현수가 앞 번호를 받고 싶어 짝꿍과 자 리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니 다.
현수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 현수가 받은 번 호와 현수 짝꿍이 받은 번호를 차례로 출력하는 프로그램을 작성하세요.
[입력예제 1]
120 125 152 130 135 135 143 127 160
[출력예제1]
[3,8]
[입력예제 2]
120 130 150 150 130 150
[출력예제 2]
[3,5]
풀이
function solution(arr){
let answer=[];
let asc = [...arr].sort((a,b) => a-b);
for(let i in arr){
if(arr[i] !== asc[i]) answer.push(Number(i)+1);
}
return answer;
}
let arr=[120, 125, 152, 130, 135, 135, 143, 127, 160];
console.log(solution(arr));
매개변수 배열 arr 를 스프레드 문법으로 얕은복사후 sort 함수를 사용하여 오름차순 으로 asc 변수에 할당한다.
반복문을 돌려서 기존 arr 배열의 요소들과 오름차순으로 정렬된 asc 배열의 요소를 비교후 값이 맞지않은 자리를 answer 빈배열에 push 해준다.
i는 0부터 시작이니 + 1을 해준다.
i를 넘버로 바꾼이유는 for in 문의 요소 i는 타입이 문자로 되어있어서다.
잘못된 정보가 있거나 부족한 부분이 있으면 댓글 남겨주세요. 태클은 언제나 환영입니다 :)
'알고리즘' 카테고리의 다른 글
회의실 배정(자바스크립트) (0) | 2023.04.13 |
---|---|
좌표정렬 (0) | 2023.04.13 |
Least Recently Used(LRU) 카카오 캐시 문제 변형 (4) | 2023.01.10 |
삽입정렬 (0) | 2022.12.22 |
Special Sort(구글 인터뷰) (0) | 2022.12.18 |