본문 바로가기

알고리즘 && 자료구조/백준

[백준 10813] 공바꾸기(Feat. Python)

728x90
반응형
SMALL

문제

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다.

도현이는 앞으로 M번 공을 바꾸려고 한다. 도현이는 공을 바꿀 바구니 2개를 선택하고, 두 바구니에 들어있는 공을 서로 교환한다.

공을 어떻게 바꿀지가 주어졌을 때, M번 공을 바꾼 이후에 각 바구니에 어떤 공이 들어있는지 구하는 프로그램을 작성하시오.

 

 

풀이

  • 처음에 N, M 으로 입력을 받고 총 공이 들어가는 곳을 배열로 지정해준 뒤 N보다는 하나 더 크게 선언
    • 이유는 후에 입력받을 INDEX들의 첫번째의 기준이 1이기 때문에 이에 대한 처리를 해주기 위해
N, M = map(int,input().split())
arr = []
for i in range(N+1):
    arr.append(i)

for i in range(1,M+1):
    firstIndex, secondindex = map(int, input().split())
    arr[firstIndex], arr[secondindex] = arr[secondindex], arr[firstIndex]

arr.pop(0)
print(*arr)
  • arr[firstIndex], arr[secondindex] = arr[secondindex], arr[firstIndex]
    • 이부분에 대해서 SWAP 이라는 함수를 만들어 해결해 줄까 생각을 했으나 파이썬 패키징에 대해서 생각해 냈고 더 간단하고 가독성 좋은 코드로 만들어 냈다.
  • 맨 처음 하나 더 선언해준 0 이 들어간 부분을 pop해주고 출력해주었다.

 

728x90
반응형
LIST