알고리즘 문제풀이(Python)

10816번: 숫자 카드 2 - Hash Table

coucou3 2020. 7. 1. 01:03
반응형

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

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

 

이번엔 Hash Table을 이용해 간단히 풀어보자.

Hash Table은 Key에 Value가 저장되는 자료형이다. Python에선 Dictionary가 해당된다. 

 

# NumberCard2.py - HashTable

def HashTable():
    cardsDic = {}
    for i in cards:		# Dictionary에 Key를 카드 번호, Value를 카드 갯수로 채운다.
        if i in cardsDic:
            cardsDic[i] += 1
        else:
            cardsDic[i] = 1

    for i in guesses:		# 찾는 값을 Key로 Dictionary에 넣어 Value를 출력한다.
        if i in cardsDic:
            print (cardsDic[i], end = " ")
        else:
            print ("0", end = " ")

 

알고리즘도 없는 간단한 풀이가 나온다.

 

 

 

결과)

Hash Table로는 상수시간에 풀리는 문제라 Python3로도 결과가 잘 나온다.

반응형