[JavaScript] 백준 1138 : 한 줄로 서기

2022. 10. 6. 21:59Algorithm/백준

level : silver 2

문제 링크 : 한 줄로 서기

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다

www.acmicpc.net

My Solution

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const N = Number(input.shift());
let list = input.shift().split(' ').map(Number);
let people = [];
for(let i = N - 1; i>=0;i--)
    people = people.slice(0,list[i]).concat([i+1, ...people.slice(list[i])]);
console.log(people.join(' ').trim());


풀이방법

이 문제의 핵심은 키가 큰 사람부터 차례대로 넣는 것이다.

 

i를 N-1부터 시작한다.

people이라는 Array에서 0부터 list[i](앞에 자신보다 더 큰 사람의 수)만큼 slice하고 i+1을 붙인다음 나머지 뒤의 배열도 붙인다.

그리고 i--를 해준다.

이 행위를 i가 0이상일때까지 한다.


느낀점
어떻게 풀어야할지 좀 고민을 했던 것 같다. 하지만 생각보다 간단히 풀렸다.