https://www.acmicpc.net/problem/22858
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
문제를 읽으면 다소 복잡해보일 수 있습니다.
한번 이 문제의 요구를
예시와 함께 보겠습니다.
저는 역으로 구해준다는 걸로 이해했습니다.
예시1의 경우를 살펴보면
섞는 패턴이
4 3 1 2 5입니다.
그럼 K=1일 때는
첫번째 숫자가 4번째로.
두번째 숫자가 3번째로.
세번째 숫자가 1번재로.
네번째 숫자가 2번재로.
다섯번쨰 숫자가 5번쨰로.
이렇게 가는 식입니다.
이를 역으로 구현하는 식으로 코드를 짰습니다.
#백준 22858번 원상복구(small)
N,K=map(int,input().split())
result=list(map(int,input().split()))
pattern=list(map(int,input().split()))
start=result
for i in range(K):
#N의 크기에 맞는 임시리스트 선언
tmp=list(range(N))
for j in range(N):
#패턴대로 앞부터 자리를 가준다.
go=pattern[j]
tmp[go-1]=start[j]
start=tmp
print(start,end=' ')
저기서 tmp에서
크기를 지정해줘야했습니다.
크기를 지정하지 않으면
크기가 0인 리스트가 되어 오류가 발생합니다.
그리고 출격할 때에는
print(start)라고 하면 리스트 전체를 출력해서
[1,4,5,3,2]
이런 식으로 출력이 됩니다.
문제에서는 각 숫자를 공백 하나 주고 출력하라고 해서
위의 형식대로 출력을 했습니다.
[Python] BOJ 22858번. 원상 복구 (small)
알고리즘
chance0523.github.io
공부하실 때 도움이 될 추가 코드입니다.
이 분꺼 참고하시면서 공부에 도움이 되셨으면 좋겠네요.
[백준 7576] 토마토(파이썬) (0) | 2022.06.22 |
---|---|
[백준 16926번] 배열돌리기1(python) (0) | 2022.06.09 |
[백준 14467번] 소가 길을 건너간 이유1(python) (0) | 2022.06.07 |
[백준 17144번] 미세먼지 안녕!(파이썬) (0) | 2022.04.27 |
[백준20055번] 컨베이어 밸트위의 로봇(파이썬) (0) | 2022.04.24 |
댓글 영역