본문 바로가기
Programmers Coding-Test

[Python] 해시 : 완주하지 못한 선수

by 으녜 2021. 4. 3.
728x90

programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

💡문제💡


마라톤에 참가한 선수들 이름이 담긴 participant 배열과

완주한 선수들의 이름이 담긴 completion 배열을 비교해 완주하지 못한 선수의 이름을 return 하시오.

 

 

[제한사항]

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.

 

입출력 예시

 

코드 및 풀이💻


Case 1) for문으로 비교하기

 

1 ) participant 크기만큼 0으로 초기화된 배열 생성

2 ) completion과 participant 배열을 비교해 같으면 해당 index의 요소  값 +1

3 ) 요소 값이 0인 이름 return 

 

 

=> 시간초과로 실패😂 (너무 복잡하게 짰나보다,,,)

 

Case 2) Sort로 정렬 후 zip으로 비교

 

 

1 ) python 내장 함수 sort로 각 배열 정렬

2 ) zip() 함수를 이용해 두 배열을 묶어준 후 비교

3 ) 만약 짝지어진 요소가 같지 않다면 해당 participant의 요소 return

4 ) 다같다면 participant의 마지막 요소 return 

 

마무리


정확성과 효율성을 같이 고려하여 코드를 짜는게 쉽지 않은 거 같다,,😭

 

다른 사람은 collection을 이용하여 이 문제를 풀었는데, 좀 더 간결한 코드인 거 같다.

728x90