TODAY TIL
안녕하세요! 이번 포스팅에서는 보드게임 할리갈리와 관련된 흥미로운 코딩 문제를 다뤄보겠습니다. 게임에서 한별이가 종을 쳐야 할 시점을 자동으로 판단하는 코드를 작성하는 방법을 단계별로 설명하겠습니다.
📋 문제 설명
할리갈리 게임은 과일이 그려진 카드들과 종으로 이루어져 있습니다. 카드를 차례로 펼쳐서 한 종류의 과일이 정확히 5개가 될 때 가장 먼저 종을 쳐야 하는 게임입니다. 만약 한 종류의 과일이 5개가 되는 순간을 놓치지 않고 종을 칠 수 있도록 도와주는 프로그램을 만들어봅시다!
입력 조건
- 첫 번째 줄: 펼쳐진 카드의 개수 NN
- 이후 각 줄에는 과일 종류 SS와 과일 개수 XX가 주어집니다.
- 과일 종류는 STRAWBERRY, BANANA, LIME, PLUM 중 하나입니다.
출력 조건
- 종을 쳐야 하면 "YES"를, 그렇지 않으면 "NO"를 출력합니다.
📝 문제 접근 방법
문제를 풀기 위해 각 과일의 개수를 누적한 후, 어떤 과일이 정확히 5개인지 확인하는 과정을 거칩니다.
- 입력 데이터 처리: 카드의 개수 NN과 카드별 과일 정보를 입력받습니다.
- 과일 개수 누적: 각 과일에 대한 개수를 누적하여 관리합니다.
- 종을 칠 조건 확인: 모든 카드의 정보를 누적한 후, 과일의 총 개수가 정확히 5인 과일이 있는지 확인합니다.
이제 코드로 문제를 해결해 보겠습니다.
# 입력 받기
N = int(input()) # 펼쳐진 카드 개수
fruit_counts = {"STRAWBERRY": 0, "BANANA": 0, "LIME": 0, "PLUM": 0}
# 카드 정보를 받아서 과일 수 누적
for _ in range(N):
S, X = input().split()
X = int(X)
fruit_counts[S] += X
# 종을 칠 조건 확인
should_ring_bell = any(count == 5 for count in fruit_counts.values())
# 결과 출력
if should_ring_bell:
print("YES")
else:
print("NO")
코드 설명
- fruit_counts 딕셔너리를 통해 각 과일의 개수를 0으로 초기화합니다.
- 각 카드를 처리하면서 S와 X의 값을 읽고, fruit_counts의 해당 과일에 X를 더합니다.
- any(count == 5 for count in fruit_counts.values())로 과일이 정확히 5개가 된 경우를 확인합니다.
- 조건에 따라 "YES" 또는 "NO"를 출력합니다.
입력 예시
3
STRAWBERRY 2
BANANA 3
STRAWBERRY 3
출력 예시
YES
위 입력에서는 딸기가 총 5개(2 + 3)가 되므로, 한별이는 종을 쳐야 합니다.
🧩 마무리
이번 포스팅에서는 할리갈리 게임에서 종을 쳐야 하는 시점을 자동으로 판별하는 코드를 구현해 보았습니다. 과일 개수를 누적하면서 조건을 확인하는 문제를 통해 딕셔너리와 반복문의 활용을 연습할 수 있었습니다. 앞으로도 다양한 게임과 관련된 문제로 알고리즘을 즐겁게 풀어보아요!
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 8일차 TIL (0) | 2024.11.05 |
---|---|
99클럽 코테 스터디_4기 7일차 TIL (0) | 2024.11.04 |
99클럽 코테 스터디_4기 5일차 TIL (0) | 2024.11.01 |
99클럽 코테 스터디_4기 4일차 TIL (0) | 2024.10.31 |
99클럽 코테 스터디_4기 3일차 TIL (0) | 2024.10.30 |