첫 코드
def solution(participant, completion):
dict_1 = {}
dict_2 = {}
for i in range(0, len(participant)):
dict_1[i] = participant[i]
for i in range(0, len(completion)):
dict_2[i] = completion[i]
dict_3 = {v:k for k,v in dict_2.items()}
for i in range(0, len(participant)):
if dict_1[i] in dict_3.keys():
temp = dict_1.pop(i)
dict_3.pop(temp)
answer = list(dict_1.values()).pop()
return answer
다소 복잡한 코드였다. 핵심 아이디어를 점검하고, 간략하게 코드를 만들어보자.
핵심 아이디어
participant와 completion의 요소는 하나 차이이다. 두 개의 리스트를 정렬하고, 인덱스 별로 비교한 다음, 처음 다르게 나온 요소를 반환해보자.
개선된 코드1
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
last_part = participant.pop()
last_comp = completion.pop()
if last_part != last_comp:
return last_part
return participant[0]
개선된 코드2
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if not completion[i] == participant[i] :
answer = participant[i]
break
else:
answer = participant[-1]
return answer
'알고리즘 > 프래그래머스 lv.1' 카테고리의 다른 글
[프래그래머스] 소수 찾기(Python) (0) | 2022.10.21 |
---|---|
2016년 (0) | 2022.10.19 |
나누어 떨어지는 숫자 배열 (0) | 2022.10.19 |
하샤드 수 (0) | 2022.10.19 |
k 번째 수 (0) | 2022.10.19 |