코딩문제풀이/파이썬
[프로그래머스] 완주하지 못한 선수 (파이썬)
오늘밤공부
2023. 3. 16. 10:00
반응형
🗓️ 문제 설명
- 수많은 마라톤 선수들이 마라톤에 참여하여 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
- 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 반화하세요.
- 제한 사항
- 마라톤 참가자 수는 1명 이상 100,000명 이하
- completion의 길이 = participant의 길이 - 1
- 참가자의 이름은 1개 이상 ~ 20개 이하의 알파벳 소문자로 이루어짐
- 참가자 중 동명이인이 있을 수 있음
- 입출력 예시
participant | completion | return |
['leo', 'kiki', 'eden'] | ['eden', 'kiki'] | 'leo' |
['marina', 'josipa', 'nikola', 'vinko', 'filipa'] | ['josipa', 'filipa', 'marina', 'nikola'] | 'vinko' |
['mislav', 'stanko', 'mislav', 'ana'] | ['stanko', 'ana', 'mislav'] | 'mislav' |
💻 코드
최종 코드
- 수정사항
>> 딕셔너리 컴프리헨션에서 반복문을 꺼내 정렬된 참가자와 완주자의 이름을 일대일 비교
코드 풀이
다른 사람 풀이
더보기


풀이 1번

- 5번줄 : collections에서 Counter를 불러와 이름의 개수의 차이를 구함
- 6번줄 : 5번줄에서 차이값이 1인 경우만 key 값이 남아있기 때문에 key값을 반환
풀이 2번

- 3번줄 : 마지막에 반환할 키값을 저장하는 변수 생성
- 4번줄 : 참가자의 해시값:이름을 저장할 딕셔너리 생성
- 5~7번줄 : 참가자를 한명씩 꺼내며 해시값으로 dic에 저장하고, temp에 해시값을 더해줌
- 8~9번줄 : 완주자를 한명씩 꺼내 temp에서 해시값을 빼줌
>> 완주자의 해시값을 반복적으로 빼면 최종적으로 하나의 해시값만 남음 - 10번줄 : 해시값에 대한 value를 저장하여 반환
⚙️ 시행착오
1차 시도
더보기


- 정확성 테스트 : 런타임 에러 1개, 실패 1개
- 효율성 테스트 : 시간초과 1개
2차 시도
더보기


- 수정사항
>> 5번줄에 딕셔너리 key값을 participant와 completion 내에 있는 이름의 개수 차이로 변경 - 효율성 테스트 : 시간초과 1개
알게된 점
더보기
- collections.Counter() : Counter함수를 통한 뺄셈이 가능
- hash() : 해시값을 생성이 가능
반응형