필통과 지우개

문제


짱짱이는 총 N개의 필통을 가지고 있으며, 각각의 필통에는 1번부터 N번까지 번호가 매겨져 있습니다. 또한, 1번부터 N번까지 번호가 적힌 지우개를 매우 많이 가지고 있습니다. 가장 처음 필통에는 지우개가 들어있지 않으며, 필통에는 지우개를 1개만 넣을 수 있습니다.

짱짱이는 앞으로 M번 지우개를 넣으려고 합니다. 짱짱이는 한 번 지우개를 넣을 때, 지우개를 넣을 필통 범위를 정하고, 정한 필통에 모두 같은 번호가 적힌 지우개를 넣습니다. 만약, 필통에 지우개가 이미 있는 경우에는 들어있는 지우개를 빼고, 새로 지우개를 넣습니다. 지우개를 넣을 필통은 연속되어 있어야 합니다.

지우개를 어떻게 넣을지가 주어졌을 때, M번 지우개를 넣은 이후에 각 필통에 어떤 지우개가 들어 있는지 구하는 프로그램을 작성하세요.

입력


  • 첫 번째 인덱스에는 크기 N과 변경 횟수 M이 공백으로 구분되어 주어집니다.
  • 이후 M개의 줄에 걸쳐 변경할 범위의 시작 인덱스와 종료 인덱스, 그리고 변경할  공백으로 구분되어 주어집니다. 

풀이


function fillBins(input) {
    const [N, M] = input[0].split(' ').map(Number);
    const result = new Array(N).fill(0);
    for (let n = 1; n <= M; n++) {
        const [i, j, k] = input[n].split(' ').map(Number);
        for (let m = i - 1; m < j; m++) {
            result[m] = k;
        }
    }
    return result.join(' ');
}

input = ['5 3', '2 4 3', '4 5 2', '3 3 4']

함수는 먼저 입력에서 N M 추출하고, N개의 필통에 들어있는 지우개를 모두 0으로 초기화한 배열을 만듭니다.

그런 다음, M 반복하면서 채울 필통에 k인 번호로된 지우개를 넣습니다.

마지막으로 모든 필통 들어있는 지우개 결과를 문자열로 변환하여 반환합니다.

'코딩문제' 카테고리의 다른 글

출석하지 않은 강아지 찾기  (0) 2024.03.24
지우개 교환  (0) 2024.03.22
주사위 상금 게임  (0) 2024.03.21
통닭 시간 프로그램  (0) 2024.03.21
윤년 판별  (0) 2024.03.20