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을 이용하여 이 문제를 풀었는데, 좀 더 간결한 코드인 거 같다.
'Programmers Coding-Test' 카테고리의 다른 글
[Python] 탐욕법(Greedy) : 체육복 (0) | 2021.04.05 |
---|---|
[Python] 정렬 : k번째수 (0) | 2021.04.04 |
[Python] 완전검색 : 모의고사 (0) | 2021.04.04 |
[Python] 2021 KAKAO BLIND RECRUITMENT : 신규 아이디 추천 (0) | 2021.04.03 |
[Python] 2019 카카오 개발자 겨울 인턴십 : 크레인 인형뽑기 게임 (0) | 2021.04.02 |