728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제는 여기서 확인할 수 있다.
def solution(participant, completion):
answer = ''
for i in completion:
if i in participant:
participant.remove(i)
continue
answer = participant[0]
return answer
그냥 브루트포스로 for문을 돌렸더니 효율성 테스트에서 모두 실패가 났다...
for문을 돌리고 그 안에서 remove()를 또 사용해 O(n^2)가 된 것이다.
다시 카테고리를 봤더니 해시 문제여서 해시를 사용하기로 했다.
파이썬에서 해시는 딕셔너리로 대체 가능하다.
def solution(participant, completion):
answer = ''
part_dict = dict.fromkeys(participant, 0)
for i in participant:
part_dict[i] += 1
for i in completion:
part_dict[i] -= 1
for key, val in part_dict.items():
if val != 0:
answer = key
return answer
겉보기에는 for문이 3개나 있어서 더 오래걸릴 것 같아 보이지만, 실제로는 O(n)으로 위의 코드보다 더 빠르게 실행된다.
728x90
'프로그래머스' 카테고리의 다른 글
[Lv.1][python] 체육복 (0) | 2022.08.08 |
---|---|
[Lv.1][python] 같은 숫자는 싫어 (0) | 2022.08.07 |
[Lv.1][python] 크레인 인형 뽑기 게임 (0) | 2022.08.07 |
[Lv.1][python]신고 결과 받기 (0) | 2022.08.02 |
오픈채팅방 (0) | 2022.07.01 |