✏️ 문제
문제 파악
처음엔 for in 돌아서 있으면 pop() 메소드를 사용해서 나머지 남은 이름을 출력하도록 코드를 짰는데 성능 테스트에서 다 시간 초과가 났다..
그래서 Counter 자료구조를 사용해서 쉽게 풀었다..! (근데 이 문제는 해시 문제라서 해시로도 풀어봐야지..)
코드
- 실패한 코드
def solution(participant, completion):
for c in completion:
if c in participant:
participant.pop(participant.index(c))
return participant[0]
- 성공한 코드
from collections import Counter
def solution(participant, completion):
participant_count = Counter(participant) # Counter({'leo': 1, 'kiki': 1, 'eden': 1})
completion_count = Counter(completion) # Counter({'eden': 1, 'kiki': 1})
answer = participant_count - completion_count # Counter({'leo': 1})
return list(answer.keys())[0]
- 해시함수 사용
def solution(participant, completion):
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
- 해시함수 사용 X
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[len(participant)-1]
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 둘만의 암호 (0) | 2024.10.29 |
---|---|
[Python] 대충 만든 자판 (0) | 2024.10.29 |
[Python] 실패율 (0) | 2024.10.27 |
[Python] 9번 / 지폐 접기 (0) | 2024.10.27 |
[Python] [1차] 다트 게임 (3) | 2024.10.27 |