문제:
엘프들과 내가 가위바위보를 해야한다.
어떤 엘프가 나에게 공략집을 주었고 그 공략집에는 엘프들이 낼 것과 내가 내야할 것들이 적혀있다.
다음과 같은 점수체계가 적용되고 공략집에 써져있는 대로 게임이 진행된다면 나는 몇 점을 얻을 것인가?
엘프들이 내는 것: 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
위의 코드에 숫자만 각각 바꿔끼면 됐다.
답은 나왔는데...
문제는 프로그램이 계산을 한 게 아니라 내가 했다는 것 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
뭔가 함수를 짜서 풀 수 있을 것만 같은데,
고민해보고 새로운 풀이가 생각나면 이 글에 업데이트 해보겠다.
'컴퓨터 & 코딩 > Python' 카테고리의 다른 글
[Python] Advent of Code 2022 - Day 4 (0) | 2022.12.04 |
---|---|
[Python] Advent of Code 2022 - Day 3 (0) | 2022.12.03 |
[Python] Advent of Code 2022 - Day 1 (0) | 2022.12.02 |
[혼공학습단 8기][혼공파] 7주 동안의 혼공학습단 후기 (0) | 2022.08.16 |
[혼공학습단 8기][혼공파] 6주차 과제 (0) | 2022.08.15 |