https://www.acmicpc.net/problem/27160
-- (대충 할리갈리에 관한 설명) -> 같은 과일이 반드시 5개만 있어야함
-- 한별이가 종을 쳐야 하면 YES을, 아니면 NO를 출력해주세요.
입력
-- 첫 번째 줄에 펼쳐진 카드의 개수 N
-- 두 번째 줄부터 N개의 줄에 걸쳐 한 줄에 하나씩 펼쳐진 카드의 정보가 주어짐
-- 카드의 정보는 공백으로 구분된, 과일의 종류를 나타내는 문자열 S와 과일의 개수를 나타내는 양의 정수 X로 이루어져 있습니다.
-- S는 STRAWBERRY, BANANA, LIME, PLUM 중 하나입니다.
하는 방식으로 구상하면 되지 않을까,,
N = int(input())
ring_bell = False
for_ in range(N):
fruit, quant = input().split()
quant = int(quant)
if quant >= 5:
ring_bell = True
break
if ring_bell:
print("YES")
else:
print("NO")
까진 알겠는데, ~과일의 갯수를 구분해서 저장할 방법을 고안하다가 지난주 코드 리뷰에서 본 딕셔너리가 기억나서 시도해봄
Key 값과 Value 값이 한 쌍으로 이루어진 자료형.
{Key1: Value1, Key2: Value2, Key3: Value3, ...}
와 같이 사용이 가능하며, 이 문제 같은 경우는
{STRAWBERRY: 5, BANANA: 1, LIME: 4, PLUM: 3}
이런식으로 저장해서 5 이상의 value값이 있는 자료가 있으면 Yes를 출력하게 만들고 싶은 것,,
N = int(input())
fruits_quant = {}
for_ in range(N):
fruit, quant = input().split()
quant = int(quant)
if fruit in fruit_quant:
fruit_quant[fruit] += quant
else:
fruit_quant[fruit] = quant
ring_bell = any(count >= 5 for count in fruit_quant.values())
if ring_bell:
print("YES")
else:
print("NO")
이런데도 정답이 안나와서 결국 구글링,,
N = int(input())
# 딕셔너리를 초기화합니다.
fruit_counts = {
'STRAWBERRY': 0,
'BANANA': 0,
'LIME': 0,
'PLUM': 0
}
for _ in range(N):
fruit, quant = input().split()
quant = int(quant)
fruit_counts[fruit] += quant
ring_bell = any(count >= 5 for count in fruit_counts.values())
if ring_bell:
print("YES")
else:
print("NO")
ㅠㅠ 딕셔너리 초기화 시켜도 틀린다.. 왜 일까,,,
2-1. 접근에서 3번 "과일 별 갯수 중 5개 이상인 과일이 있으면 YES 출력" 이어야함.
5개 이상이 아닌 5개인 과일이 있으면이기 때문에
N = int(input())
# 딕셔너리를 초기화합니다.
fruit_counts = {
'STRAWBERRY': 0,
'BANANA': 0,
'LIME': 0,
'PLUM': 0
}
for _ in range(N):
fruit, quant = input().split()
quant = int(quant)
fruit_counts[fruit] += quant
ring_bell = any(count == 5 for count in fruit_counts.values())
if ring_bell:
print("YES")
else:
print("NO")
카운트 == 수정을 통해서 정답