반응형
안녕하세요.
이번 포스팅은 백준 온라인 저지의 10813번 문제 풀이입니다.
문제 이름은 "공 바꾸기" 입니다.
문제
문제 링크는 바로 밑의 링크를 확인해주세요.
https://www.acmicpc.net/problem/10813
10813번: 공 바꾸기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이
www.acmicpc.net
풀이
1
2
3
4
5
6
7
8
9
10
|
N, M = map(int, input().split())
num = [i for i in range(1, N+1)]
swap = 0
for _ in range(M):
i, j = map(int, input().split())
swap = num[i-1]
num[i-1] = num[j-1]
num[j-1] = swap
for i in num:
print(i, end=' ')
|
cs |
핵심: 리스트의 인덱스를 이용해서 i-1 과 j-1 의 자리를 교환합니다.
인덱스의 시작은 0부터 시작하기 때문에 1번 자리일 경우 -1를 한 0번을 적용합니다.
1. N, M을 공백 기준으로 입력 받습니다.
2. 1부터 N까지의 바구니를 생성합니다.
1부터 시작하기 때문에 range의 범위를 1부터 N+1 까지로 지정합니다.
3. 교환 시 i와 j를 한 번에 교환할 수 없으므로 임시로 저장할 변수를 생성합니다.
4. for문을 사용해서 M번 반복합니다.
5. 바구니의 자리인 i와 j를 입력 받습니다.
6~8. 입력 받은 i와 j를 swap 변수를 이용해서 자리를 교환합니다.
리스트의 인덱스는 0부터 시작하기 때문에 입력 받은 i와 j를 -1 해줍니다.
9~10. 출력 조건에 맞게 리스트를 출력합니다.
댓글