Algorithm πŸ§‘πŸ»‍πŸ’»/λ°±μ€€(BOJ)

[λ°±μ€€,c++] 22858번 - 원상 볡ꡬ(small)

dkswnkk 2022. 9. 28. 00:05

문제

 

22858번: 원상 볡ꡬ (small)

μˆ˜κ°€ μ ν˜€μžˆλŠ” $P_1, P_2, ..., P_N$ $N$개의 μΉ΄λ“œκ°€ μžˆλ‹€. 1λΆ€ν„° NκΉŒμ§€ μˆ˜κ°€ ν•˜λ‚˜μ”© μ‘΄μž¬ν•˜λŠ” $D_1, D_2, ... , D_i , ... D_N$ κ°€ μžˆλ‹€. μ΄λ•Œ $D_i$λŠ” $P_{D_i}$ κ°’을 $i$ 번째둜 κ°€μ§€κ³  μ˜€λŠ” κ²ƒμ„ μ˜λ―Έν•œλ‹€. μ΄λŸ¬ν•œ

www.acmicpc.net

 

μ½”λ“œ

#include <iostream>
#include <memory.h>

using namespace std;

int D[10001], S[10001], v[10001];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N, K; cin>>N>>K;
    for(int i=1; i<=N; i++) cin>>S[i];
    for(int i=1; i<=N; i++) cin>>D[i];
    
    
    while(K--){
        for(int i=1; i<=N; i++){
            v[D[i]] = S[i];
        }
        memcpy(S,v,sizeof(S));
    }
    for(int i=1; i<=N; i++) cout<< v[i] << ' ';
}

 

풀이

문제λ₯Ό 잘 이해해야 ν•©λ‹ˆλ‹€.

μœ„μ˜ P[1 4 5 3 2] κ°€ 적힌 μΉ΄λ“œκ°€ D μˆœμ„œλŒ€λ‘œ μ…”ν”Œμ„ μ§„ν–‰ν–ˆμ„ λ•Œ S[3 5 1 4 2]κ°€ λ‚˜μ˜€κ²Œ λ˜λŠ” 문제인데 쑰금 더 ν’€μ–΄μ„œ μ΄μ•ΌκΈ°ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • P = 1 μΌλ•Œ D = 4μž…λ‹ˆλ‹€. λ”°λΌμ„œ Sλ°°μ—΄μ˜ 4번째 μΈλ±μŠ€μ— λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.
  • P = 4μΌλ•Œ D = 3μž…λ‹ˆλ‹€. λ”°λΌμ„œ Sλ°°μ—΄μ˜ 3번째 μΈλ±μŠ€μ— λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.
  • P = 5μΌλ•Œ D = 1μž…λ‹ˆλ‹€. λ”°λΌμ„œ Sλ°°μ—΄μ˜ 1번째 μΈλ±μŠ€μ— λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.
  • P = 3μΌλ•Œ D = 2μž…λ‹ˆλ‹€. λ”°λΌμ„œ Sλ°°μ—΄μ˜ 2번째 μΈλ±μŠ€μ— λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.
  • P = 2μΌλ•Œ D = 5μž…λ‹ˆλ‹€. λ”°λΌμ„œ Sλ°°μ—΄μ˜ 5번째 μΈλ±μŠ€μ— λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„ λ‘œμ§μ„ κΈ°μ€€μœΌλ‘œ λ‹¨μˆœ κ΅¬ν˜„μ„ ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.