반응형
String answer = "";
Map<String, Integer> map = new HashMap<>();
for (String name : participant) {
if (map.get(name) == null) {
map.put(name, 0);
} else {
int value = map.get(name) + 1;
map.put(name, value);
}
}
for (String name : completion) {
int value = map.get(name) - 1;
map.put(name, value);
}
for (String name : map.keySet()) {
if (map.get(name) == 0) answer = name;
}
return answer;
오랜만에 문제를 푸니 하나도 모르겠네요..
매일 풀면서 좀 익혀야겠어요
저는 우선 생각한게 map이었습니다.
배열 두개가 나왔고 공통된것을 찾아 없애자고 생각했습니다.
하지만 돌로 되어버린 제 머린 생각을 멈췄고.... 간단하게 구현해보자를 떠올렸습니다.
첫 key 값들로 참여자를 넣었고 value 값으로 0을 넣어줬습니다. 그리고 중복되는 선수들은 +1을 해줬습니다.
그리고 완주자들의 이름을 key값에 넣어 get(key)로 value를 받아와 완주를 했다면 -1을 해줬습니다.(완주자는 -1로, 완주 못한 사람인 0을 찾기 위해서!!!)
이렇게 생각하다보니 위처럼 구현이 되었습니다.
정말 모르겠네요...
이 쉬운걸 1시간을 풀었네요....흑흑
다른 분의 정답입니다.
Arrays.sort(participant); Arrays.sort(completion); int i; for ( i=0; i<completion.length; i++){ if (!participant[i].equals(completion[i])){ return participant[i]; } } return participant[i];
오름차순으로 정렬을 해주어서 알파벳 순서대로 정렬이 되었습니다.
정렬 후, 완주자의 완주 순서부터 확인해 안맞으면 return해줍니다.
이걸 좀 더 보기 쉽게 고치면
Arrays.sort(participant);
Arrays.sort(completion);
for (int i=0; i<completion.length; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return null;
이렇게도 가능하겠네요..
모두 화이팅
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 level1 문제 : K번째수(java) (0) | 2018.10.13 |
---|---|
프로그래머스 level1 문제 : 기능개발(java) (0) | 2018.10.11 |
프로그래머스 level1 문제 : 나누어 떨어지는 숫자 배열(java) (0) | 2018.06.01 |
프로그래머스 level1 문제 : 올바른 괄호(java) (0) | 2018.06.01 |
프로그래머스 level1 문제 : 같은 숫자는 싫어 (0) | 2018.05.31 |