알고리즘/코딩테스트 문제 정리
[99클럽] dict 활용 초급
고래강이
2025. 1. 20. 13:11
🌈 파이썬 코드
N = int(input())
def solution_1(N):
dict_1 = {}
for i in range(N):
fruit, amount = input().split(" ")
amount = int(amount)
keys = dict_1.keys()
if fruit in keys:
dict_1[fruit] += amount
else:
dict_1[fruit] = amount
if 5 in dict_1.values():
return 'YES'
return 'NO'
print(solution_1(N))
- 간단한 문제 풀이였는데 여기서 시간이 너무 오래걸려서 나온다는 생각이 들었다. 그래서 주변 다른 사람의 코드를 보면서 왜 내껀 시간이 오래걸리지에 대한 의문을 품게 되었다.
- 메모리: 32412KB, 시간: 2644ms
다른 사람의 풀이
import sys
input = sys.stdin.readline
d = {}
for _ in range(int(input())):
s, x = input().split()
d[s] = d.get(s, 0) + int(x)
for n in d:
if d[n] == 5:
print('YES')
exit()
print('NO')
- 코드량에서도 차이가 많이나지만 무엇보다 시간이 96ms로 내 풀이와는 차이가 많이 났기에 한 번 분석해보자
- 가장 많이 차이가 나는 부분은 d.get(s, 0)이라고 한단 이 부분을 나는 keys method를 이용해서 처리했는데 이는 dict_1의 모든 값을 한 번씩 순회하면서 값을 찾아내기에 있는지 없는지 알기 위한 여부에 대해서는 d.get(s, 0) 이 방식을 사용하면 더 좋을 것 같다.