기록을 합시다.
[프로그래머스] 완주하지 못 한 선수 본문
문제 요약
- 마라톤에 참여 하였지만 마라톤을 완주하지 못 한 사람을 구해야 한다.
- 중복된 이름이 있어서 그 점을 유의해야 한다.
- 문제에 나와있듯, 완주하지 못 한 사람은 딱 한 명이다.
내가 생각한 로직(python)
- collections 라이브러리의 Counter 클래스를 사용하여, 완주한 사람과 완주하지 못 한 사람을 이름 별로 세어준 딕셔너리 생성
- 딕셔너리들끼리 -연산을 한다. (python에서는 딕셔너리끼리 +, - 연산 가능)
- 값이 0이 아닌 이름이 곧 정답
파이썬으로 제출한 정답
from collections import Counter
def solution(participant, completion):
participant_dic = Counter(participant)
completion_dic = Counter(completion)
answer_dic = participant_dic - completion_dic
for key in answer_dic.keys():
if answer_dic[key] > 0:
return key
내가 생각한 로직(java)
- 참가자와 참가하지 않은 사람들의 Queue를 각각 만들어주고, 정렬 한다.
- 참가하지 않은 사람의 Queue가 빌 때까지 Queue에서 poll을 해주고, 값을 비교한다.
- 값이 서로 다를 때, 그 이름이 곧 정답이다.
자바로 제출한 정답
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
LinkedList<String> participants = new LinkedList<String>(Arrays.asList(participant));
LinkedList<String> completions = new LinkedList<String>(Arrays.asList(completion));
Collections.sort(participants);
Collections.sort(completions);
String answer = "";
while(!completions.isEmpty()){
String participatedPerson = participants.poll();
String completedPerson = completions.poll();
if(!participatedPerson.equals(completedPerson)){
answer=participatedPerson;
break;
}
}
if(answer==""){
return participants.poll();
}
return answer;
}
}
'공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 타겟 넘버(python/java) (0) | 2023.06.12 |
---|---|
[프로그래머스] 모의고사(python/java) (0) | 2023.06.12 |
[프로그래머스] 최소 직사각형(python/java) (0) | 2023.06.11 |
[프로그래머스] k번째 수(python/java) (0) | 2023.06.05 |
[프로그래머스] 같은 숫자는 싫어(python/java) (0) | 2023.06.05 |
Comments