코딩테스트 & 문제 풀이

[Python]백준_1547 : 공

Hicecream 2023. 6. 23. 10:15

2022년 8월 28일에 작성

 

https://www.acmicpc.net/problem/1547

 

1547번: 공

첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것

www.acmicpc.net

 

 

문제 분석

1번, 2번, 3번 컵이 일렬로 있을 때, 공의 위치는 1번 컵 위치로 고정이다.

컵의 번호 2개를 골랐을 때, 그 컵들의 위치를 서로 바꾼다.

컵의 위치를 M번 반복해서 바꾸고 난 이후에 공이 들어있는 컵의 번호를 구한다.

 

 

소스 코드 (⭕)

M = int(input())  # 컵의 위치를 바꿀 횟수 입력

cups = [1, 2, 3]  # 1번, 2번, 3번 컵 리스트

for _ in range(M):  # M번 반복
  x, y = map(int, input().split())  # x, y 값 입력 받기

  c1 = cups.index(x)  # x의 인덱스 가져오기
  c2 = cups.index(y)  # y의 인덱스 가져오기

  cups[c1], cups[c2] = cups[c2], cups[c1]  # 컵 위치 바꾸기

print(cups[0])  # 공이 들어있는 컵번호 출력

 

코드 분석

1. 공의 위치를 바꿀 횟수인 M을 입력하고, cups 리스트에 컵의 번호 1, 2, 3을 넣는다.

2. for문으로 M번 반복한다.

  2-1. 컵의 위치를 바꿀 컵 번호 x, y를 입력한다.

  2-2. x와 y의 인덱스, 즉 x, y의 위치를 c1, c2에 대입한다.

  2-3. c1과 c2를 바꿔서 컵의 위치를 바꾼다.

3. 공의 위치는 맨 처음 1번 컵 자리에 고정이므로, cups[0] 위치에 있는 컵의 번호를 출력한다.

 

 

 

end

문제에서 출력 부분의 -1은 뭔가 싶어서 검색해봤더니 함정이라고 한다..!
공이 사라질 수가 없기 때문에...
문제에 함정도 있다니 충격❗