문제 이해
첫글자를 key값으로 넣고, 다음 입력값의 첫글자가 이미 딕셔너리 key로 저장되어 있다면 +1 해주는 로직이 떠올랐다.
첫번째 시도 _ 실패
n = int(input())
d = {}
for i in range(n):
name = input()
key = name[0]
# 만약 이미 d에 key 값이 존재하는 경우
if d.get(key):
d[key] += 1
else:
d[key] = 1
ans = list(d.values())
for i in ans:
if i >= 5:
for k,v in d.items():
print(k)
첫번째 시도 모든 key 값을 출력해버림. items 함수를 통해 딕셔너리의 key값을 구했기 때문이다.
- 딕셔너리의 items 메소드 : 키, 밸류 쌍을 구할 수 있다.
- for문으로 딕셔너리의 key, value를 순회할 수 있다.
두번째 시도 - 최종 코드
n = int(input())
d = {}
for i in range(n):
name = input()
key = name[0]
# 만약 이미 d에 key 값이 존재하는 경우
if d.get(key):
d[key] += 1
else:
d[key] = 1
ans_val = list(d.values())
ans_key = list(d.keys())
ans = []
for i in range(len(ans_val)):
if ans_val[i] >= 5:
ans.append(ans_key[i])
ans.sort()
if len(ans)>0:
print(''.join(ans))
else:
print('PREDAJA')
딕셔너리의 get 메소드는 key 값을 통해 value 값을 반환한다.
- 우선 딕셔너리의 키와 밸류 값을 각각 ans_key, ans_val 리스트에 저장을 하고, ㅍalue가 5 이상인 것만(문제조건) if문을 통해 걸러서 최종 정답 리스트인 ans에 키 값을 입력해주었다.
- 키, 밸류 쌍이 아닌 키 값만 출력해야 하기 때문에 위와 같은 방법을 사용했다.
문제 조건 중에 사전 순으로 출력하라는 조건이 있었기 때문에 정렬 또한 잊지 않고 해주었다.
'PS > BOJ&Programmers' 카테고리의 다른 글
[백준/7510] 고급 수학 (0) | 2023.01.14 |
---|---|
[백준/6996] 애너그램.. 반례찾기 (1) | 2023.01.10 |
[백준/15726] 이칙연산 (0) | 2023.01.01 |
[백준/1343] 폴리오미노 (0) | 2022.12.31 |
[백준/1712] 손익분기점 (1) | 2022.12.31 |