백준 10813 - 공 넣기와 매우 유사한 문제. input이 모두 인자가 2개여서 더 풀어내기에 수월하다.
나의 풀이
f=lambda:map(int,input().split())
n_basket,n_round=f()
ans=[i+1 for i in range(n_basket)]
exec("i,j=f();ans[i-1],ans[j-1]=ans[j-1],ans[i-1];"*n_round)
print(*ans)
초기값에 해당하는 list를 ans 변수에 저장한 뒤에, 지정한 박스를 서로 switch 하는 과정을 구현하였다.
고수들의 풀이 참고하기!
f=lambda:map(int,input().split())
n,m=f();*b,=range(n+1)
exec("i,j=f();b[i],b[j]=b[j],b[i];"*m)
print(*b[1:])
-
*b=range(n+1)
-
*b
를 이용하면[i+1 for i in range(n_basket)]
for문을 이용하지 않고도 우변의 요소가 들어있는 list를 생성 가능해서 편리하다
-
-
range(n)
이 아닌range(n+1)
로 지정한 이유- k번 상자에 k번 공이 들어가게 되도록 설정한 것 -> 직관적으로 파악 가능하다.
- 0번 상자는 존재하지 않으므로 출력을 [1:]로 슬라이싱하여 나타내면 된다.