728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42576
일단 중요한 제한 사항을 보자면 아래 2가지가 있습니다.
1. completion의 길이는 participant의 길이보다 1 작습니다.
2. 참가자 중에는 동명이인이 있을 수 있습니다.
1 조건을 이용하여 문제를 풀기 위해 set을 이용했습니다.
1) 만약 participant과 completion 내에 동명이인이 없다면
len(set(participant)) == len(set(completion))+1 을 충족할 것이고
2) 만약 participant 내에 동명이인이 있다면
len(set(participant)) == len(set(completion)) 을 충족할 것입니다.
따라서 차집합을 구하는 difference를 이용하여 두 개의 케이스로 나누어 보았습니다.
그래서 만약 1)이라면 아래 코드의 a에는 완주하지 못한 선수의 이름만이 저장될 것이고
2)라면 분명 어떤 한 이름에 대한 동명이인의 수가 다른 경우가 있으므로
ex) participant에는 "kiki"가 3명, completion에는 "kiki"가 2명인 경우
해당 경우를 for문을 이용하여 찾으면 됩니다. (count: 리스트 내에 특정 원소가 몇 개있는지 센다.)
def solution(participant, completion):
answer = ''
#case 1
p = set(participant)
c = set(completion)
a = p.difference(c)
if len(a) != 0:
return a.pop()
#case 2
else:
for i in range(len(completion)):
if completion.count(completion[i]) != participant.count(completion[i]):
return completion[i]
return answer'코딩' 카테고리의 다른 글
| 프로그래머스 - 코딩테스트 고득점 Kit - 해시 - 위장 (python) (0) | 2023.01.23 |
|---|---|
| 프로그래머스 - 코딩테스트 고득점 Kit - 해시 - 전화번호 목록 (python) (2) | 2023.01.23 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 해시 - 폰켓몬 (python) (0) | 2023.01.23 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 정렬 - H-Index (python) (0) | 2023.01.19 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 정렬 - K번째수 (python) (0) | 2023.01.19 |