반응형
Level 1 해시
문제 : https://programmers.co.kr/learn/courses/30/lessons/42576
시행착오
첫번째 코드는 동명이인을 해결하지 못했습니다.
그래서 딕셔너리와 count를 이용했으나 테스트 케이스는 맞았지만 효율성 문제에서 틀렸습니다.
따로 남겨놓지 못해서 코드가 없습니다.
정답 코드
정렬해서 이름이 다른 것이 나오면 바로 출력하게 만들었습니다.
1명만 완주를 못했으니까 정렬로 빠르게 해결이 가능했던 것 같습니다.
def solution(participant, completion):
answer = ''
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
answer = participant[i]
return answer
answer = participant[-1]
return answer
좋아요를 가장 많이 받은 코드
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
파이썬 라이브러리의 강력함을 알 수 있는 코드입니다. 가장 좋아요가 많은 코드로 collections의 Counter() 객체를 이용하여 객체 내부 원소의 차이를 출력하는 방법입니다.
내 코드 vs 최적화 코드
왼쪽이 제 코드, 오른쪽이 최적화 코드인데 정렬하여 푼 방법이 더 깔끔한 것을 알 수 있었습니다. 하지만 위 문제는 해쉬 문제로 오른쪽이 더 문제의 의도대로 푼 것이라고 할 수 있을 것 같습니다.
반응형
'ProblemSolving > Hash' 카테고리의 다른 글
프로그래머스 베스트앨범 (파이썬) (0) | 2022.05.05 |
---|---|
프로그래머스 위장 (파이썬) (0) | 2022.05.03 |
프로그래머스 전화번호 목록 (파이썬) (0) | 2022.05.03 |
프로그래머스 신고 결과 받기 (파이썬) (0) | 2022.05.03 |