[BOJ] 22858번: 원상 복구 (small) 자바스크립트 풀이

2025. 6. 22. 17:19·Algorithm

1. 문제

https://www.acmicpc.net/problem/22858

 

 

2. 풀이과정

의사코드

i = 0, 1, 2, 3, 4 
카드 초기 상태 P = [1, 4, 5, 3, 2]
셔플 규칙 D = [4, 3, 1, 2, 5]
셔플 결과 S

[ 셔플 과정 ] 
i = 0 -> D[i] = D[0] = 4.
4번째 카드는 인덱스상 P[i - 1] = P[3]이므로, P[3] = 3을 i = 0번째로 이동시킨다.
즉, 셔플 1번 후 S[i] = P[D[i] - 1]이 됨.

셔플이 2번 일어날 때의 결과를 S2라고 한다면,
S2[i] = S[D[i] - 1]이 됨.
이 때, S[D[i] - 1] = P[D[D[i] - 1] - 1]이 됨.
즉, 셔플이 K번 일어날 때마다 D[i] - 1이 중첩된다.

 

전체코드

const readline = require('readline');

(async () => {
    const rl = readline.createInterface({ input: process.stdin });
    
    const input = [];
    for await (const line of rl) {
        input.push(line.trim());
        if (input.length === 3) rl.close();
    }
    
    const [N, K] = input[0].split(' ').map(Number);
    const S = input[1].split(' ').map(Number);
    const D = input[2].split(' ').map(Number);
    
    let P = Array(N).fill(0);
    for (let i = 0; i < N; i++) {
        let d = i;
        for (let k = 0; k < K; k++) {
          d = D[d] - 1;  
        };
        P[d] = S[i];
    }
    
    console.log(P.join(' '));
})();

'Algorithm' 카테고리의 다른 글

[BOJ] 2346번: 풍선 터뜨리기 자바스크립트 풀이 (메모리 초과)  (0) 2025.07.08
[BOJ] 5766번: 할아버지는 유명해! 자바스크립트 풀이  (2) 2025.06.20
[BOJ] 10994번: 별 찍기 - 19 자바스크립트 풀이  (0) 2025.06.20
'Algorithm' 카테고리의 다른 글
  • [BOJ] 2346번: 풍선 터뜨리기 자바스크립트 풀이 (메모리 초과)
  • [BOJ] 5766번: 할아버지는 유명해! 자바스크립트 풀이
  • [BOJ] 10994번: 별 찍기 - 19 자바스크립트 풀이
zooyaa
zooyaa
  • zooyaa
    성장 중!
    zooyaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • Algorithm (4)
      • CS (5)
      • Projects (0)
      • Web (1)
      • 경험들 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
zooyaa
[BOJ] 22858번: 원상 복구 (small) 자바스크립트 풀이
상단으로

티스토리툴바