나의 풀이.
첫번째 참여자 배열에서 HashMap.put 하는데 getOrDefault 메서드로 key가 있으면 + 1 없으면 0 으로 해주고
두번째 완주자 배열에서 HashMap.put 할 때 key 가 있으면 해당 value에서 - 1 해주기
그럼 완주하지 못한 애는 value가 1이니 조건문을 통해 answer에 key 할당해주면 OK...?
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<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;
}
}
효율성이 낮은건가... 해서 배열을 오름차순으로 정렬하고
배열 인덱스 요소를 비교하고
마지막에 모든 인덱스 요소가 동일하다면 동명이인이 있으므로
참가자의 마지막 인덱스 요소를 answer에 할당하는 방법으로 풀어봄
import java.util.Arrays;
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];
break;
}
}
if (answer.equals("")) {
answer = participant[participant.length - 1];
}
return answer;
}
}
반복문을 사용해서 시간은 더 걸린거 같고
정확성과 효율성 높일 수 있는 방법이 뭔지 궁금하네..
끗!
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/42576
'CODING TEST' 카테고리의 다른 글
프로그래머스 - 공원 산책 (0) | 2023.05.18 |
---|---|
프로그래머스 - 안전지대 (0) | 2023.05.17 |
프로그래머스 - 짝수와 홀수 (0) | 2023.05.16 |
백준 10807번 - 개수 세기 (0) | 2023.05.15 |
백준 2830번 - 행성 X3 (0) | 2023.05.15 |