https://www.acmicpc.net/problem/22858
문제를 읽으면 다소 복잡해보일 수 있습니다.
한번 이 문제의 요구를
예시와 함께 보겠습니다.
저는 역으로 구해준다는 걸로 이해했습니다.
예시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]
이런 식으로 출력이 됩니다.
문제에서는 각 숫자를 공백 하나 주고 출력하라고 해서
위의 형식대로 출력을 했습니다.
공부하실 때 도움이 될 추가 코드입니다.
이 분꺼 참고하시면서 공부에 도움이 되셨으면 좋겠네요.
[백준 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 |
댓글 영역