본문 바로가기
츄Log/알고리즘 연습장

연습#3 완주하지 못한 선수

by 츄츄🦭 2023. 12. 4.
728x90

 

오늘도 알고리즘 유형을 익히기 위해 프로그래머스 고득점Kit에서 레벨1짜리 문제, 해시>완주하지 못한 선수를 풀었습니다.

슥 보고 문제가 굉장히 쉽다고 생각해서 10분만에 풀어냈으나 테스트 케이스에서 틀려버렸고, 패인은 문제를 끝까지 읽지 않은 것이었습니다.

 

이후 풀이에서는 시간초과로 실패하고, 잠깐 포기할까 했으나 핀이 '중복은 카운트를 생각해볼 수 있다'라는 힌트를 통해 결국 풀어냈습니다.

 

문제 유형별 접근법을 익히게 되네요!

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
     
        Map<String, Integer> participantMap = new HashMap<String, Integer>();   
        for (int i=0; i <participant.length; i++) {  
            participantMap.put(participant[i], 
                participantMap.get(participant[i]) == null? 1 : participantMap.get(participant[i])+1);
        }
        
        for (int j=0; j<completion.length; j++) {
            participantMap.put(completion[j], participantMap.get(completion[j]) - 1);
        }
        
        Set<String> keySet = participantMap.keySet();
        for (String key : keySet) {
            if (participantMap.get(key) != 0) {
                answer = key;
                break;
            }
        }

        return answer;
    }
}

// 다른 사람 풀이
class Solution {
    public 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 player : completion) hm.put(player, hm.get(player) - 1);

        for (String key : hm.keySet()) {
            if (hm.get(key) != 0){
                answer = key;
            }
        }
        return answer;
    }
}

 

 

다른 분들의 풀이를 보면서 반성하게 됩니다.

HashMap의 getOrDefault도 업무에서는 굉장히 잘 활용했었는데, 왜 알고리즘 문제를 풀 때는 아무것도 생각이 안 나는 바보가 될까요? 

 

오늘 배운점입니다.

1. 문제를 끝까지 읽자⭐️⭐️⭐️⭐️⭐️ 

2. 중복은 카운트를 고려해보자.

728x90

'츄Log > 알고리즘 연습장' 카테고리의 다른 글

연습#6 H-Index  (1) 2023.12.06
연습#5 가장 큰 수  (1) 2023.12.06
연습#4 폰켓몬  (1) 2023.12.05
연습#2 K번째수  (1) 2023.12.03
연습#1 599. Minimum Index Sum of Two Lists  (0) 2023.12.03