* 접근 방안

 player를 key값으로, 완주 여부를 value값으로 셋팅하여 완주 여부를 판단 하고자 했습니다.

 

* 문제 해결

 player를 set 할때 1-loop,

 완주 여부를 set할때 1-loop,

 완주 못한 사람은 뽑아낼때 1-loop

 총 3번의 loop를 서칭하게 된다. 이 부분을 어떻게 하면 줄일 수 있을지 고민하였습니다.

 

 고민 끝에

 keySet()를 사용해서 key값을 가져온후(1-loop) value값을 가져오려면(1-loop) 2번의 loop를 돌게 됩니다.  

 이 부분을 entrySet()로 줄일수 있었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public static String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hm = new HashMap<>();
        
        for(String player : participant) hm.put(player, hm.getOrDefault(player, 0+ 1);
        for(String finish : completion) hm.put(finish, hm.get(finish) - 1);
        
        for(Map.Entry<String, Integer> map : hm.entrySet()) {
            if(map.getValue() != 0) {
                answer = map.getKey();
            }
        }
        
        return answer;
    }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

 

'Algorithm > solution' 카테고리의 다른 글

[프로그래머스 #level3] 네트워크.java  (0) 2021.03.16
[프로그래머스 #level2] 조이스틱.java  (0) 2021.02.23
#2178. 미로탐색  (0) 2018.12.24
#14503. 로봇 청소기  (1) 2018.01.22
#14891. 톱니바퀴  (0) 2018.01.17

+ Recent posts