[python_파이썬_Pass]백준_1547번_공_시뮬레이션_풀이

2024. 8. 26. 19:54코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/WSAIqn6prZQ?feature=shared

 

회사 점심시간 사이 2문제 해결.

 

<첫번째 시도 : 맞았습니다.>

실제로는 여러 방향으로 시도를 하면서 잘못된 답이 나오고 최종 코드로만 제출을 했다.

처음에는 answer[answer.index(X)], answer[answer.index(Y)] = Y, X를 했는데 계속 오류가 나서 곰곰히 생각을 해 보았더니 answer[answer.index(X)] = Y가 먼저 실행되고, 뒤를 이어 answer[answer.index(Y)]가 실행되면 기존 answer가 수정된 상태로 index가 구해지므로 의도치 않은 결과가 나온다는 걸 이해했다.

import sys
input = sys.stdin.readline

M = int(input())
answer = [0, 1, 2, 3]

"""요소의 자리를 변경"""
for _ in range(M):
    X, Y = map(int, input().split())
    IX, IY = answer.index(X), answer.index(Y)
    answer[IX], answer[IY] = Y, X

print(answer[1])

 

<두번째 시도 : 맞았습니다. 다른 사람풀이 조금 참고>

이 문제를 처음 접했을때 생각한 방향이 아래의 코드였다.

하지만 정답이 들어 있는 컵을 기준으로 들어 있지 않은 컵 2개의 자리가 바뀌는 예외 상황까지 고려해야 한다고 생각했기에 모든 컵들의 이동을 추적할 수 있게 코드를 작성했다.

하지만, 결국 정답이 들어 있는 시작컵 1번을 기준으로 바뀐 컵들만 보면 되기 때문에 굳이 index를 사용해가면서까지 코드를 설계할 필요가 없을 것 같다.

import sys
input = sys.stdin.readline

M = int(input())
answer = 1

for _ in range(M):
    X, Y = map(int, input().split())
    if X == answer:
        answer = Y
    elif Y == answer:
        answer = X

print(answer)
       
728x90
반응형