[BOJ] Q22233 가희와 키워드

Question

Language: Python

Difficulty: Silver 2

해당 문제는 해싱을 통해 특정 값이 집합 내에 존재하는지 여부를 통해 문제를 풀이하는 유형의 문제이다.

Solution1

defaultdict을 활용하여 집합 내에 값이 존재하는 지 여부를 판단, defaultdict를 활용하게 되면, 기본적으로 값을 초기화를 진행하기 때문에 상대적으로 dictionary 형태보다 시간이 많이 소요된다.

from collections import defaultdict
def solution():
    keyword_count=n
    for note_keywords in notes:
        for keyword in note_keywords:
            if keywords[keyword]==1:
                keywords[keyword]=-1
                keyword_count-=1
        print(keyword_count)


if __name__ == "__main__":
    n,m=map(int,input().split())
    keywords=defaultdict(int)

    for _ in range(n):
        keyword=input().strip()
        keywords[keyword]=1

    notes=[list(map(str,input().strip().split(","))) for _ in range(m)]
    
    solution()

Solution 2

set을 활용하여 집합 내에 값이 있는지 여부를 판단하는 방법으로도 풀이가 가능하다.

from collections import defaultdict
def solution():
    keyword_count=n
    for note_keywords in notes:
        for keyword in note_keywords:
            if keyword in keywords:
                keyword_count-=1
                keywords.remove(keyword)
        print(keyword_count)


if __name__ == "__main__":
    n,m=map(int,input().split())
    keywords=set()
        
    for _ in range(n):
        keyword=input().strip()
        keywords.add(keyword)
        
    notes=[list(map(str,input().strip().split(","))) for _ in range(m)]
    
    solution()

댓글남기기