본문 바로가기

코테/프로그래머스

lv1 완주하지 못한 선수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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]){
                answer += participant[i];
                //participant 와 completion 둘다 같은 서순의 배열을 가지고 있음.
                //완주하지 못한 사람이 중간 서순에 있으면 particpant[i]와 completion[i] 의 값이 다름
                return answer;
            }
        }
        //만약 다 같다 하면 participant의 마지막 애가 완주하지 못한 것이다.
        answer +=participant[participant.length-1];
        return answer;
    }
}
cs

다른 사람의 풀이 - 해쉬를 이용해서

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
 
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String,Integer> hashmap = new HashMap<>();
        //participant 정보 등록 String :선수이름 , Integer 답 판별에 필요한 1 
        for(String player :participant) hashmap.put(player,hashmap.getOrDefault(player,0+ 1 );
        //hashmap에 있는 애들 completion의 player인 key로 꺼내와서 
        //기존에 등록되어있는사람(=완주한 사람) value -1  로 value를 재등록
        for(String player : completion) hashmap.put(palyer,hashmap.get(player)-1);      
            
        //만약 value 가 0이 아니면 0이 아니다.
        for(String player: hashmap.keySet()){
            if(hashmap.get(player) != 0) {
answer = player;
break;
}   
       }
        return answer;
    }
}
 
cs

key와 value를 가져오는 것이면 entryset이 더 효율이 좋다.

 

1
2
3
4
5
for(Map.Entry<String,Integer> entry: hashMap.entrySet()) {
            if(entry.getValue() !=0) {
                answer = entry.getKey();
            }
}
cs

'코테 > 프로그래머스' 카테고리의 다른 글

이름 있는 동물 아이디  (0) 2020.12.27
상위 n개 레코드  (0) 2020.12.26
3진법 뒤집기  (0) 2020.12.06
lv1 수박수박수박수박수박수?  (0) 2020.11.15
lv1 체육복  (0) 2020.11.12