-
[99클럽] dict 활용 초급알고리즘/코딩테스트 문제 정리 2025. 1. 20. 13:11
출처: 백준 27160번
🌈 파이썬 코드
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) 이 방식을 사용하면 더 좋을 것 같다.
'알고리즘 > 코딩테스트 문제 정리' 카테고리의 다른 글
[99클럽] stack 구현 (0) 2025.02.03 [99클럽] 이분탐색 활용 (0) 2025.01.22 [99클럽] 입력 (0) 2025.01.16 [99클럽] 이분탐색 (0) 2025.01.14 [코딩 테스트 합격자 되기] deque 사용하기 (0) 2025.01.13