문제
완주하지 못한 선수
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
제한 사항
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
생각해보기
- HashMap에다가 참가자들을 넣어준다.
- 완주자들을 HashMap에서 빼주고 참가자들 중 완주하지 못한 선수 즉, value가 0이 아닌 값을 반환한다.
Code
이번 문제는 무조건 1명만 완주를 못했다는 가정이 있기 때문에 더 쉬운 문제라고 생각.
또한, 예제 3번에 동명이인이 있기 때문에 key에 대한 value를 대응시켜주는 구조인 Hash table로 푸는 방법이 바람직하다고 생각한다.
Java
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = ""; // 정답 담을 변수
HashMap<String, Integer> map = new HashMap<>();
// participant를 map에 담아줌
for (String item: participant) {
map.put(item, map.getOrDefault(item, 0) + 1);
}
// map에서 completion 확인하며 감소
for(String item: completion) {
if (map.containsKey(item)) {
map.put(item, map.get(item) - 1);
}
}
// completion 후 남은 participant 확인
for (String item: participant) {
if (map.get(item) != 0) {
answer = item;
}
}
return answer;
}
}
테스트 결과
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 모의고사 (0) | 2023.01.10 |
---|---|
[프로그래머스] k번째수 (0) | 2022.12.30 |
[프로그래머스] 더 맵게 (0) | 2022.12.29 |
[프로그래머스] 기능개발 (0) | 2022.12.28 |