Problem Solving/Etc.
15464-The Bovine Shuffle(Bronze)
hjhj97
2018. 12. 12. 16:18
15464-The Bovine Shuffle(Bronze)
셔플 규칙 수열과 이 규칙을 기준으로 3번 셔플된 후의 order를 알려주고, 이 결과를 바탕으로 셔플 하기 전인 처음 상태의 order를 유추하는 문제다. 3번 셔플된 후를 알고 있으니 거꾸로 거슬러 올라가면서 2번->1번->처음 이렇게 order를 갱신해주면 된다.
만약 3번 셔플의 결과가 a b c d e 이고,셔플 규칙이 1 3 4 5 2이면 그 직전(2번 셔플)은 a c d e b가 되는 식이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include<stdio.h> #define SIZE 101 int n,arr[SIZE]; int order[4][SIZE]; int main(){ scanf("%d",&n); for(int i=1 ; i<=n ; i++){ scanf("%d",&arr[i]); } for(int i=1 ; i<=n ; i++) scanf("%d",&order[0][i]); for(int i=1 ; i<=3 ; i++){ for(int j=1 ; j<=n ; j++){ order[i][j]=order[i-1][arr[j]]; } } for(int i=1 ; i<=n ; i++){ printf("%d\n",order[3][i]); } return 0; } | cs |