문제 이해

첫글자를 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
sebinChu