조앤의 기술블로그

[프로그래머스 / 해시] 완주하지 못한 선수 (java) 본문

Programming/프로그래머스

[프로그래머스 / 해시] 완주하지 못한 선수 (java)

쬬앤 2020. 3. 27. 14:26

해시를 사용하는 방법을 익히기 위해 다른 사람의 코드를 참고하였다. 

예제 3번의 조건을 유의해야 했다. (참여자 명단에 두명이 있는 경우)

해시를 사용하면 시간복잡도가 O(n)이 된다. 

[코드]

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        int val = 0;
        Map<String, Integer> hm = new HashMap<>();
        
        for(String part : participant){
            if(hm.get(part) == null)
                hm.put(part, 1);
            else{
                val = hm.get(part) + 1;
                hm.put(part, val);
            }
        }
        
        for(String comp : completion){
            val = hm.get(comp) - 1;
            hm.put(comp,val);
        }
        //완주했다면 key가 0이 된다. 
        for(String key : hm.keySet()){
            if(hm.get(key) == 1)
                answer = key;
        }
        return answer;
    }
}

 

 

[Map]

keySet() 함수 사용예시

https://tychejin.tistory.com/31

 

[Java] Map 전체 출력(entrySet, keySet, Iterator)

Map에 값을 전체 출력하기 위해서는 entrySet(), keySet() 메소드를 사용하면 되는데 entrySet() 메서드는 key와 value의 값이 모두 필요한 경우 사용하고, keySet() 메서드는 key의 값만 필요한 경우 사용합니다...

tychejin.tistory.com

 

[참고]

 

https://dreamhollic.tistory.com/entry/알고리즘-문제-풀이5-완주하지-못한-선수-JAVA

 

[알고리즘 문제 풀이]#5 완주하지 못한 선수 [JAVA]

1. 문제 설명 문제: https://programmers.co.kr/learn/courses/30/lessons/42576 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에..

dreamhollic.tistory.com