기록하는 개발자

[프로그래머스][JAVA] 완주하지 못한 선수 본문

Algorithm

[프로그래머스][JAVA] 완주하지 못한 선수

밍맹030 2021. 6. 11. 22:13
728x90

import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion){
        String answer = "";
        int temp;
        
        // key : 참가자명, value : 해당 이름을 가진 사람 수
        Map<String,Integer> par=new HashMap<>(); // <key,value>

        /*hashmap에 참가자를 추가하는 반복문*/
        for(int i=0; i<participant.length; i++){
            if(par.get(participant[i])==null) //map에 참가자를 처음 넣는 경우 : value=1
                par.put(participant[i],1);
                
            else { //이미 참가자 이름이 map에 있는 경우(동명이인) 
                temp=par.get(participant[i])+1; //key로 value값을 꺼내 1 증가시킨다.
                par.put(participant[i],temp); // 증가시킨 값으로 value 초기화
            } 
        }
        
        /*완주자 명단 탐색*/
        for(int i=0; i<completion.length; i++){ 
            temp = par.get(completion[i])-1; //완주자 이름 key의 value를 1 감소
            par.put(completion[i],temp); //감소한 값으로 value 초기화 
        }

        /*최종*/
        for (String key : par.keySet()) { //keySet함수는 hashmap에 있는 key를 모두 가져온다.
            if(par.get(key)==1) //value가 1인 경우의 key값이 answer가 된다.
                answer=key;
        }
        return answer;
    }
}
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/42576
728x90