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

완주하지 못한 선수


풀이과정

  1. dict 딕셔너리를 만든다.
  2. participant 리스트를 for문을 돌려 선수의 이름이 dict에 key로 있으면 해당 key의 value에 1을 더한다. 원소가 dict에 key로 없으면 선수의 이름을 key로, 1을 value로 갖는 요소를 추가한다.
  3. completion 리스트를 for문을 돌려 선수의 이름이 dict에 key로 있으면 해당 key의 value에 1을 뺀다. 이 때 value가 0이 되면 dict에서 선수의 이름이 key인 요소를 제거한다.
  4. 마지막까지 dict에 key로 남아있는 값이 답이 된다.

Python Code

def solution(participant, completion):
    answer = ''
    dict = {}
    for i in participant:
        if i in dict:
            dict[i] += 1
        else:
            dict[i] = 1
            
    for i in completion:
        if i in dict:
            dict[i] -= 1
            if dict[i] == 0:
                del dict[i]
    
    answer = list(dict.keys())[0]
    return answer

Java Code

import java.util.HashMap;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> players = new HashMap<String, Integer>();
        for(String name: participant){
            if(players.containsKey(name)){
                players.put(name, players.get(name)+1);
            }else{
                players.put(name, 1);
            }
        }
        for(String name: completion){
            players.put(name, players.get(name)-1);
        }
        for (HashMap.Entry<String, Integer> entry : players.entrySet()) {
            if(entry.getValue() >= 1) {
                answer = entry.getKey();
			}
        }
        return answer;
    }
}

좋은 웹페이지 즐겨찾기