본문 바로가기
알고리즘

완주하지 못한 선수

by e-pd 2020. 8. 22.

 

https://programmers.co.kr/learn/courses/30/lessons/425762

 

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

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

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;
 
class Solution {
    public String solution(String[] participant, String[] completion) {
    
        Map<String, Integer> map = new HashMap<>();
        
        for (String player : participant) {
            map.put(player, map.getOrDefault( player, 0+ 1);
        }
        
        for (String complete : completion) {
            int left = map.get(complete) - 1;
            
            if (left == 0) {
                map.remove(complete);
            } else {
                map.put(complete, map.get(complete) - 1);
            }
        }
        
        return map.keySet().iterator().next();
    }
}
cs

 

1. input에서 output를 비교하는 문제이다.

 

2. 값을 넣을 map을 선언하고 값이 있는지 없는지를 비교한다.

 

3. map.getOrDefault를 유용하게 사용하자. 값이 없으면 default있으면 값을 꺼내올 수 있다.

 

4. 완주 선수의 값을 map에서 꺼내온다. 모두 값이 없어졌으면 map에서 값을 지운다.

 

5. 마지막으로 map의 key값들을 꺼내온다.

'알고리즘' 카테고리의 다른 글

K th largest element in an Array  (0) 2020.08.25
Unique한 문자인가  (0) 2020.08.24
String to Num  (0) 2020.08.24
정수 내림차순으로 배치하기  (0) 2020.08.22
같은 숫자는 싫어  (0) 2020.08.20