728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/42576
<문제 풀이>
- 동명이인을 구분하기 위해 참가자의 이름별로 1씩 더한다. (동명이인이라면 2가 되니까)
- 완주자 명단에 있는 이름은 1을 뺀다.
- 완주하지 못한 사람은 한 명뿐이므로 값이 1인 이름을 출력한다.
<코드>
#1차시도 - 정확성 1,3,4,5 효율성 1,2,3,4,5 실패
def solution(participant, completion):
answer = ''
participant = sorted(participant)
completion = sorted(completion)
for x,y in zip(participant, completion):
if x!=y:
answer = x
if answer == '':
answer = participant[-1]
return answer
#성공
def solution(participant, completion):
answer = ''
dic = {x:0 for x in participant}
for i in participant:
dic[i] +=1
for i in completion:
dic[i] -=1
for k,v in dic.items():
if v==1:
answer = k
return answer
<고쳐야 할 점>
- import Counter from collections ==> Counter({'key':count}). 키 별로 개수를 세주는 라이브러리 기억하기
- 해시(딕셔너리에) 익숙해지기
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[재귀함수] 백준 10829번 '이진수 변환' (Python) (0) | 2021.11.23 |
---|---|
[해시] 프로그래머스 L2 '전화번호 목록' (Python) (0) | 2021.11.23 |
[해시] 백준 15829번 'Hashing' (Python) (0) | 2021.11.23 |
[진법변환] 프로그래머스 L1 '비밀지도' (Python) (0) | 2021.11.23 |
[진법변환] 백준 2745번 '진법 변환' (Python) (0) | 2021.11.23 |