컴퓨터 & 코딩/Python

[Python] Advent of Code 2022 - Day 2

구로그 2022. 12. 2. 17:26
728x90

문제: 

엘프들과 내가 가위바위보를 해야한다. 

어떤 엘프가 나에게 공략집을 주었고 그 공략집에는 엘프들이 낼 것과 내가 내야할 것들이 적혀있다. 

다음과 같은 점수체계가 적용되고 공략집에 써져있는 대로 게임이 진행된다면 나는 몇 점을 얻을 것인가? 

엘프들이 내는 것: A(바위), B(보), C(가위)
내가 내는 것: X(바위), Y(보), Z(가위) 

점수 = 내가 낸 것 + 승패
내가 낸 것: 바위(1점), 보(2점), 가위(3점)
승패: 승(6점), 비김(3점), 패(0점) 

일단 경우의 수들을 하나하나 다 계산해보았다. 

 

A X (draw) = 1 + 3 = 4 

A Y (win) = 2 + 6 = 8 

A Z (lose) = 3 + 0  = 3 

 

B X (lose) = 1 + 0 = 1 

B Y (draw) = 2 + 3 = 5 

B Z (win) = 3 + 6 = 9 

 

C X (win) = 1 + 6 = 7 

C Y (lose) = 2 + 0 = 2 

C Z (draw) = 3 + 3 = 6 

 

그리고 각각의 값들을 가지고 매우 단순하게 코드를 짜보았다. 

file = open("input/day2.txt", "r")
play_list = file.read().splitlines()

score = 0

for play in play_list:
    if play[0] == "A":
        if play[2] == "X":
            score += 4
        elif play[2] == "Y":
            score += 8
        elif play[2] == "Z":
            score += 3
    if play[0] == "B":
        if play[2] == "X":
            score += 1
        elif play[2] == "Y":
            score += 5
        elif play[2] == "Z":
            score += 9
    if play[0] == "C":
        if play[2] == "X":
            score += 7
        elif play[2] == "Y":
            score += 2
        elif play[2] == "Z":
            score += 6

print(score)

뭔가 이상하지만, 일단 두 번째 퍼즐까지 풀어보았다. 

두 번째 퍼즐에서는 X, Y, Z가 내가 내는 것을 나타내는 게 아니고 졌는지(X), 비겼는지(Y), 이겼는지(Z) 를 나타내는 것이다.

이를 바탕으로 다시 자료를 계산해야했다. 

 

A X (lose / 가위) = 3 + 0 = 3

A Y (draw / 바위) = 1 + 3 = 4

A Z (win / 보 ) = 2 + 6 = 8

 

B X (lose / 바위) = 1 + 0 = 1

B Y (draw / 보) = 2 + 3 = 5

B Z (win / 가위) = 3 + 6 = 9

 

C X (lose / 보) = 2 + 0 = 2

C Y (draw / 가위) = 3 + 3 = 6

C Z (win / 바위) = 1 + 6 = 7

 

위의 코드에 숫자만 각각 바꿔끼면 됐다.

 

답은 나왔는데...

문제는 프로그램이 계산을 한 게 아니라 내가 했다는 것 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

뭔가 함수를 짜서 풀 수 있을 것만 같은데, 

고민해보고 새로운 풀이가 생각나면 이 글에 업데이트 해보겠다. 

반응형