ABOUT ME

Today
Yesterday
Total
  • 2776. [Python]암기왕
    Python_알고리즘/Silver IV 2025. 1. 14. 04:09

    1. 문제

     

    https://www.acmicpc.net/problem/2776

     

    2. 접근 방법

     

    • 시간 제한: 2초
    • 메모리 제한: 256MB
    • 딕셔너리

     

    3. 파이썬 코드

     

    import sys
    # 많은 인풋처리
    T = int(sys.stdin.readline())
    # 테스트 케이스 반복문
    for i in range(1,T+1):
    	# 딕셔너리 선언
        num_dict = {}
        N = int(sys.stdin.readline())
        nums = list(map(int,sys.stdin.readline().split()))
        M = int(sys.stdin.readline())
        nums_check = list(map(int,sys.stdin.readline().split()))
        # 딕셔너리에 값 저장
        for j in nums:
            if j not in num_dict:
                num_dict[j] = 0
    	# 숫자가 딕셔너리에 있으면 1 출력 없으면 0 출력
        for k in nums_check:
            if k in num_dict:
                print('1')
            else:
                print('0')

     

    4. 문제를 풀고난 후 생각

     

    • 첫 문제 접근을 이분 탐색으로 진행했지만 시간초과가 발생하여 고민한 문제이다. 1,000,000 의 N, M 이기 때문에 결국 리스트를 정렬 후 탐색을 함에 있어서 시간초과가 발생한 것 같다.
    • 다른 자료구조인 딕셔너리의 탐색을 통해서 (O(1)) 시간 복잡도를 단순하게 만들었기 때문에 별도의 sort 처리가 필요없고 시간복잡도를 줄이는 방식을 사용하여 체크를 진행했다.
    • 시간복잡도에 대해서 고민을 할 수 있던 문제였다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • 딕셔너리

    'Python_알고리즘 > Silver IV' 카테고리의 다른 글

    2164. [Python] 카드2  (0) 2023.07.13
    1015. [Python]수열 정렬  (0) 2023.05.28
    1057. [Python]토너먼트  (2) 2023.05.16
    1544. [Python]사이클 단어  (0) 2023.05.15
    2090. [Python]조화 평균  (0) 2023.05.14

    댓글

Designed by Tistory.