https://programmers.co.kr/learn/courses/30/lessons/42576
다음 문제는, 마라톤에 참여한 사람들의 배열 1개와 완주한 사람들의 배열 1개가 주어질 때, 그 중 완주하지 못한 선수를 찾아내는 문제입니다.
- 완주한 사람들의 이름을 찾고
- 그 사람들의 이름을 index 함수를 가지고 참가자 목록에서 찾은 다음 지워버리기
- 그러고 한사람이 남게 되면 그 사람 반환
- 참가자들을 가지고 value값으로 딕셔너리 구성 (key 값은 그냥 숫자로)
- 1번에서 구성한 딕셔너리의 키값과 완주자의 이름이 같다면 딕셔너리 키값을 0으로 바꾸고 완주자 이름을 목록에서 제거
- key값과 value값을 바꿔주기
- del 예약어를 가지고 key값이 0인 애들 싹 지워주기 (이 과정에서 딕셔너리 내에는 1개만 존재하게 됨)
- 리스트로 변환해서 0번째 인덱스 값 반환
- 참가한 사람들과 완주한 사람들을 각각 정렬해준다.
- 두 리스트의 순서를 차례대로 비교하고, 만약 다른 값이 나온다면 그 값이 정답이다.
def solution(participant, completion):
for i in range(len(completion)):
del participant[participant.index(completion[i])]
return participant[0]
def solution(participant, completion):
diction = {i+1 : key for i, key in enumerate(participant)}
for i, key in enumerate(diction):
if i < len(completion):
for j in range(len(completion)):
if diction[key] == completion[j]: # 키 값 수정
diction[key] = 0
completion[j] = 0
diction_edit = {v:k for k,v in diction.items()}
del diction_edit[0]
a = list(diction_edit.keys())
return a[0]
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[-1]
정렬해서 비교해 풀 생각은 전혀 하지 못했는데 승현이덕분에 아이디어를 얻었다.
요즘 문제 풀면서 정렬이 유용했던 적이 되게 많이 있었는데 흠.. 앞으로 이런 문제 나오면 틀리지 말아야징😁