https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
완주하지 못한 선수를 찾아내는 문제로, 해시를 사용해 문제를 해결할 수 있습니다.
먼저 dict[key] 의 value가 없는 경우 0으로 가져오며, 이 때 value를 1로 초기화 해줍니다. 값이 존재하는 경우 기존의 dict[name]의 값을 하나씩 늘려줍니다.
다음으로 completion을 돌며 dict의 value를 하나씩 빼주고 value가 0이 아닌 key를 리턴해주면 답을 구할 수 있습니다.
collections.Counter를 사용하면 위의 작업을 간단히 수행할 수 있습니다. Counter 객체의 key값을 list에 담고 첫번째 값을 출력해주면 동일한 답을 구할 수 있습니다.
import collections
def solution(participant, completion):
answer = ''
# dict = {}
# for name in participant:
# if not dict.get(name, 0):
# dict[name] = 1
# else:
# dict[name]+=1
# for name in completion:
# dict[name]-=1
# for key, value in dict.items():
# if value:
# return key
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
아래는 hash 함수를 사용해 participant를 고윳값으로 변환하고 다시 빼주는 작업을 통해 최종적으로 남은 dic[hash]의 값을 가져옵니다
answer = ''
temp = 0
dic = {}
for part in participant:
dic[hash(part)] = part
temp += int(hash(part))
for com in completion:
temp -= hash(com)
answer = dic[temp]
return answer
'프로그래머스 > Lv.1' 카테고리의 다른 글
[Python] 프로그래머스 문자열 다루기 기본 (0) | 2024.07.29 |
---|---|
[Python] 프로그래머스 평균 구하기 (0) | 2024.07.29 |
[Python] 프로그래머스 정수 제곱근 판별 (0) | 2024.07.18 |
[Python] 프로그래머스 정수 내림차순으로 배치하기 (0) | 2024.07.18 |
[Python] 프로그래머스 자연수 뒤집어 배열로 만들기 (0) | 2024.07.17 |