프로그래머스 - 해시 

# 완주하지 못한 선수

  • 문자열 문제는 정렬부터 하고 보자. 
def solution(participant, completion):
    participant.sort()
    completion.sort()

    for par, com in zip(participant, completion) :
        if par != com :
            return par   # 예시 1번

    return participant[-1]         # 예시 2번
# 예시 1번
A = ['a','b','b','c'] 
B = ['a','b','c']
zip(A, B)  # [('a','a'), ('b','b'), ('b','c')]  # 차이 발생

# 예시 2번 - 1
A = ['a','b','c','c']   # 마지막 값 (중복된 값이 맨 뒤에)
B = ['a','b','c']
zip(A, B)  # [('a','a'), ('b','b'), ('c','c')]

# 예시 2번 -2
A = ['a','b','c']       # 마지막 값 (하나 다른 것이 맨 뒤에)
B = ['a','b]
zip(A, B)  # [('a','a'), ('b','b')]

 

+ (GOOD) 풀이 

  • Point. 딕셔너리를 이용한 데이터 갯수 세기 -> collections 모듈
import collections

def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]

( collections : 참고

반응형

+ Recent posts