장난꾸러기 현수

bkboy·2022년 5월 19일
0

문제

새 학기가 시작되었습니다. 현수는 새 짝꿍을 만나 너무 신이 났습니다.
현수네 반에는 N명의 학생들이 있습니다.
선생님은 반 학생들에게 반 번호를 정해 주기 위해 운동장에 반 학생들을 키가 가장 작은 학
생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까
지 부여합니다. 현수는 짝꿍보다 키가 큽니다. 그런데 현수가 앞 번호를 받고 싶어 짝꿍과 자
리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니
다.
현수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 현수가 받은 번
호와 현수 짝꿍이 받은 번호를 차례로 출력하는 프로그램을 작성하세요.

제한사항

입출력 예

풀이

function solution(arr) {
  let answer = [];
  [...arr]
    .sort((a, b) => a - b)
    .map((e, i) => {
      if (e !== arr[i]) {
        answer.push(i + 1);
      }
    });
  return answer;
}
  • 정렬 전과 후를 비교하면 된다.
  • 정렬한 배열을 순환하며 원래 배열 다른 값을 가진 index를 answer배열에 넣어주었다.
  • map함수보단 forEach를 쓰는게 좋아보인다.
profile
음악하는 개발자

0개의 댓글