백준 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]