본문 바로가기

Problem Solving/programmers

[Programmers] Level 1 완주하지 못한 선수.java

728x90
반응형
SMALL

프로그래머스 Level 1 완주하지 못한 선수를 자바를 통해 풀어보았다. 

 

programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

원본 코드는 깃허브에!!

 

tomy9729/Algorithm

🐗 내가 직접 작성한 내 코드 🐗. Contribute to tomy9729/Algorithm development by creating an account on GitHub.

github.com

 


Level 1 - 완주하지 못한 선수

//Level 1 완주하지 못한 선수.java
import java.util.HashMap;
class Solution {
    public String solution(String[] participant, String[] completion) {
        //참여 participant, 완주 completion
        String answer = "";
        HashMap<String,Integer> result = new HashMap<String,Integer>(); //해시 맵
        for(int i =0;i<participant.length;i++){ //모든 참가 선수를 해시에 넣는다
            if(result.containsKey(participant[i])){//만약 해시에 이미 있다면
                result.put(participant[i],result.get(participant[i])+1);//동명이인이므로 한명추가
            }
            else{
                result.put(participant[i],1);//만약 해시에 없다면 추가
            }
        }
        for(int i=0;i<completion.length;i++){//모든 완주한 선수에 대해서
            result.put(completion[i],result.get(completion[i])-1);//완주한 사람은 참가자의 value에서 1씩 빼준다
            if(result.get(completion[i])==0){//만약 value가 0이라면 그 이름을 가진 사람은 모두 완주한 것이므로
                result.remove(completion[i]);//해시 맵에서 삭제한다.
            }
        }
        
        answer = result.keySet().iterator().next();//해시에 남아있는 오직 하나의 key,value
        return answer;
    }
}
728x90
반응형
SMALL