Algorithm JS - 장난 꾸러기 현수

jiny·2022년 9월 16일
0

JavaScript Algorithm

목록 보기
6/23
post-thumbnail

문제

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

입력 설명

첫 번째 줄에 자연수 N(5<=N<=100)이 주어진다. 두 번째 줄에 제일 앞에부터 일렬로 서있는 학생들의 키가 주어진다. 키 값 H는 (120<=H<=180)의 자연수 입니다.

입력 예제 1

6
120 130 150 150 130 150

출력 예제 1

3 5

알고리즘

  1. 기존 선생님이 세운 키 순서 배열 생성 (initial Sort)
  2. 현수가 마음대로 짝꿍과 바꾼 키 순서 배열 생성 (change Sort)
  3. change Sort 배열을 순회 하며 initial Sort의 요소와 다른지 비교
  4. 다를 경우 answer 배열에 해당 인덱스 값 추가

풀이

let answer = new Array();

let changeSort = require("fs").readFileSync(__dirname + "/input.txt").toString().trim().split("\n").slice(1).join().split(" ").map((i) => Number(i));

let initialSort = [...changeSort].sort();

for (let i = 0; i < changeSort.length; i++) {
  if (changeSort[i] !== initialSort[i]) {
    answer.push(i + 1);
  }
}
console.log(answer);

0개의 댓글