https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
참가자와 완주자 사이에 맞지 않는 한 명을 찾는 문제입니다.
HashMap (파이썬의 Dictionary)자료구조를 사용해 풀이했습니다.
문제를 처음 보면 참가자들을 저장하고, 완주자들을 제외 한 뒤 남은 한 명을 구하는 식으로 구현해야할것 같습니다.
하지만 가만히 생각해보면 완주자들을 저장한 뒤 참가자들을 순회하면서 완주자 목록에 없는 사람을 찾는 역순으로 구현하는게 더 간단합니다.
완주자들의 이름을 key로 Dictionary에 넣어 존재하지 않는다면 value를 1로 저장하고 동명이인이 있다면 value+1로 갱신해줍니다.
이후 참가자들의 이름을 완주자를 저장한 Dictionary에서 확인하면서 하나씩 지워주다가 존재하지 않는 이름이나 완주 목록이 이미 0이 된 이름이 나오면 그 참가자가 우리가 찾는 답이 됩니다.
def solution(participant, completion):
map = {}
for i in completion :
if(i in map):
map[i] = map.get(i) + 1
else :
map[i] = 1
for i in participant:
if(i in map and map[i] > 0):
map[i] = map.get(i) - 1
else :
return i
participant = [["leo", "kiki", "eden"], ["marina", "josipa", "nikola", "vinko", "filipa"], ["mislav", "stanko", "mislav", "ana"]]
completion = [["eden", "kiki"], ["josipa", "filipa", "marina", "nikola"], ["stanko", "ana", "mislav"]]
for i in range(0,3):
print(solution(participant[i], completion[i]))
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 43162.네트워크 (Lv.3) (0) | 2022.08.06 |
---|---|
[Python] 프로그래머스 49189.가장 먼 노드 (Lv.3) (0) | 2022.08.02 |
[Python] 프로그래머스 12977.소수만들기 (Lv.1) (0) | 2022.07.18 |
[Python] 프로그래머스 81301.숫자문자열과영단어 (Lv.1) (0) | 2022.07.11 |
[Python] 프로그래머스 72410.신규아이디추천 (Lv.1) (0) | 2022.07.11 |