ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.