https://www.acmicpc.net/problem/22858
1. 난이도 실버3
2. 내가 작성한 코드
n, k = map(int, input().split())
end = list(map(int, input().split()))
d = list(map(int, input().split()))
for i in range(k):
middle = [0 for _ in range(n)]
for j in range(len(d)):
middle[d[j]-1] = end[j]
end = middle
for i in middle: #최종 출력
print(i, end=" ")
1. 중간 결과(카드를 섞기 전의 배치)를 저장하기 위해 middle이라는 배열을 선언한다.
2. 내 코드 기준 최종 결과에서 j번에 있던 카드들은 d[j]가 가르키는 자리에 있던 카드들이기 때문에 middle[d[j]]번에 저장시켜준다. (인덱스 값을 맞춰주기 위해서 d[j] - 1을 해줬다)
3. 2번 과정을 한 번 돌릴 때마다 end를 middle로 갱신한다. => k-1번 섞은 후 카드의 배치가 됨
4. 2,3과정을 k번 반복해 주면 완성이다.
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 2615번 오목(python) (1) | 2023.04.25 |
---|---|
[백준] 배열 돌리기(python) (0) | 2023.04.23 |
[백준] 17413번 단어 뒤집기2(python) (0) | 2023.04.21 |
[백준] 20291 파일 정리(python) (1) | 2023.04.20 |
[백준] 12933번 오리(python) (0) | 2023.04.20 |
댓글