[Baekjoon Online Judge] 풀이

[Baekjoon Online Judge] 백준 10813번: 공 바꾸기 파이썬 풀이 - 알고리즘 코딩 문제 해설 python

codeomni 2023. 4. 4. 19:56
반응형

 

안녕하세요.

이번 포스팅은 백준 온라인 저지의 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. 출력 조건에 맞게 리스트를 출력합니다.