Joshbla 2022. 6. 17. 00:59

2022/06/16

  • 프로그래머스 코딩테스트 연습 lv.1 [ 완주하지 못한 선수, k번째 수, 모의고사, 체육복 ]

- k번째 수 ( Arrays.copyOfRange(배열,시작,끝) 사용하기 )

- 완주하지 못한 선수( 해시 미사용  - 예제 시간 최대 300ms )

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";

        String[] all = new String[participant.length+completion.length];
        
        for(int i=0;i<participant.length;i++){
            all[i*2] = participant[i];
            if(i==participant.length-1) break;
            all[i*2+1] = completion[i];
        }
       
        Arrays.sort(all);
        
        for(int i=0;i<all.length-1;i++){
            if(all[i].equals(all[i+1])){
                all[i] = "0";
                all[i+1] = "0";
            }else if(all[i]!="0" && !all[i].equals(all[i+1])){
                answer = all[i];
                break;
            }else answer = all[i+1];
        }      
        return answer;
    }
}

- 완주하지 못한 선수( 해시 사용  - 예제 시간 최대 90ms )

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> map = new HashMap<>();

        for(int i=0;i<participant.length;i++){
            map.put(participant[i],map.getOrDefault(participant[i],0)+1);
        }
        for(int i=0;i<completion.length;i++){
            map.put(completion[i],map.get(completion[i])-1);
        }
        for(int i = 0; i<participant.length; i++){
            if(map.get(participant[i])!=0){
             answer = participant[i];           
             break;
            } 
        } 
        return answer;
    }
}