본문 바로가기
메모장/코딩테스트 준비

프로그래머스 - 완주하지 못한 선수 - 자바 - 코딩테스트 준비

by code2772 2023. 3. 23.

[ 목차 ]

    728x90
    반응형

     
    ✔ HashMap

    import java.util.*;
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer = "";
            Map<String, Integer> map = new HashMap<>();
            
            for (String p : participant) {
                map.put(p, map.getOrDefault(p, 0) +1);
            }
            for (String c : completion){
                map.put(c, map.get(c) -1);
            }
            for (String key : map.keySet()){
                if(map.get(key) != 0){
                    answer = key;
                    break;
                }
            }
            return answer;
        }
    }

    1. Map을 사용하여 String, Integer로 구분한다.
    2. participant의 배열에 있는것들을 1로 바꿔준다.
    3. completion에 있는 것을 -1로 바꿔 둘이 겹치는 것을 +1 -1 해서 0으로 변경
    4.  map,keySet을 이용해서 0이 아닌것 즉 서로 다른것을 반환한다.
    5. 그럼 원하는 답이 리턴된다.
                                                                                    
     
    ✔ 배열
     

    import java.util.*;
    class Solution {
        public String solution(String[] participant, String[] completion) {
            String answer = "";
            Arrays.sort(participant);
            Arrays.sort(completion);
            
            for(int i =0; i < completion.length; i++){
                if(participant[i].equals(completion[i])){
                    continue;
                }else{
                    return participant[i];
                }
            }
            return participant[participant.length-1];
        }
    }

    1. Arrays.sort( ) 를 이용하여 배열 2개를 정렬한다. 비교하기 위해서 이다.
    2. completion 길이만큼 반복을 돌린다.
    3. if문으로 두개의 배열에서 각 동일 내용이 있으면 그저 넘기고 아닌것을 리턴한다.
    4. 최종 리턴은 participant의 참가자 길이의 -1을 하면 첫번째 0 차이는 1개이기 때문에 나오게 된다. 

    반응형