백준 10813 - 공 바꾸기 (python)
2023. 3. 10. 02:08ㆍ알고리즘
문제
https://www.acmicpc.net/problem/10813
10813번: 공 바꾸기
도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이
www.acmicpc.net
풀이
- n과 m을 입력받고 range 함수를 이용하여 1부터 n까지 수가 저장된 리스트를 만든다
- i, j 를 입력받은 뒤 각각 1씩 빼준다 (리스트의 인덱스는 0부터 시작하기 때문)
- 리스트의 i번째 요소와 j번째 요소를 교환하는 과정을 m번 반복한다
- join함수를 이용하여 format에 맞게 출력한다.
n,m=map(int,input().split()) #n, m 입력받기
basket = list(range(1,n+1)) #길이가 1부터 n까지 정수가 저장된 길이가 n인 리스트 생성
for _ in range(m):
#i, j 입력받기
i,j = map(int,input().split())
#리스트의 첫번째 요소는 0이므로 i와 j를 1씩 빼주기
i-=1
j-=1
#i번째 요소와 j번째 요소 교환
buf = basket[j]
basket[j] = basket[i]
basket[i] = buf
#format에 맞게 출력
print(" ".join(map(str,basket)))
i번째 요소와 j번째 요소를 교환하는 과정은 파이썬에서 다음과 같이 한줄로 줄일 수도 있다.
basket[i], basket[j] = basket[j], basket[i]