공부 흔적남기기

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

코테/프로그래머스

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

65살까지 코딩 2022. 1. 15. 09:53
728x90
반응형
import java.util.HashMap;

import java.util.Set;


class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        //HashMap를 사용하면 간단히 풀리는 문제
        //key와 value 형태로 값을 저장함 -> key가 중복될 경우 자동으로 replace되니 조심
        //EX{"name1" : 2, "name2", 1"} pytho의 dictionary 형태인데 저장하는 방식이 다를뿐임
        HashMap<String, Integer> hashMap = new HashMap<>();
        //이름과 숫자로 해시맵을 하나 만듦 
        //이름이 겹칠 수 있는데 겹친다면 벨류값을 +1해줌
        for (int i = 0; i < participant.length; i++) {
            String people = participant[i];
            if(hashMap.containsKey(people)){
                hashMap.put(people, hashMap.get(people)+1);
            }else{
                hashMap.put(people,1);
            }
        }
        //1차로 contains key를 통해 완주자 배열에서 이름을 하나씩 꺼내어 해시맵의 key를 통해 확인
        //꺼낼떄 value값을 1씩 빼줌
       for( int i =0; i<completion.length; i++){
           String people = completion[i];
           if(hashMap.get(people) ==1){
               hashMap.remove(people);
           }else{
               hashMap.put(people,hashMap.get(people)-1);
           }
       }
        //문제 조건에 따르면 해시맵에 value가 1인 값이 하나가 남을 수 밖에 없음 
        //조건에 맞게 string으로 변경하여 return
        answer = hashMap.keySet().toString();
        System.out.println(answer);
        return answer;
    }
}

출처:https://programmers.co.kr/learn/courses/30/lessons/42576

 

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

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

programmers.co.kr

 

728x90
반응형