알고리즘

프로그래머스 Lv1. Hash (파이썬 / Python)

hundredeuk2 2022. 9. 22. 15:52
728x90

프로그래머스 문제 중 해시문제 Lv1을 풀었다.

내 풀이와는 다르게 딕셔너리 값을 뺄 수 있다는 코드를 보고 알고리즘 공부를 내 코드를 완료했다는게 중요한게 아니라 더 효율적인 코드를 보고 공부해야겠다는 생각에 시작했다.

 

우선 문제에 대한 나의 코드는 이렇다

def solution(participant, completion):
    answer = ''
    dic = {}
    for i in participant:
        if i in dic:
            dic[i] += 1
        else:
            dic[i] = 1


    for c in completion:
        dic[c] -= 1


    for k in dic:
        if dic[k] >= 1:
            answer += k
            break


    return answer

많이 길 뿐만 아니라 비효율적이다.

 

Collections의 Counter를 쓰면 Dict끼리 값을 뺄 수 있다는 사실을 알았다.

 
from collections import Counter


collections.Counter(x) - collections.Counter(y)
 

를 하게 되면 x에서 y를 뺀 딕셔너리 값이 나온다.