728x90
마라톤에 참가한 선수들의 배열이 participant 완주 성공한 사람들의 배열이 completion입니다.
완주하지 못한 사람 1명을 return 하시오.
[처음 푼 방법]
참가자들과 완주자들을 정렬합니다.
순서대로 참가자와 완주자들을 비교합니다.
참가자와 완주자가 같지 않은 경우, 그 참가자는 완주하지 못한 선수로 간주하고 값을 리턴합니다.
반복문을 다 돌았는데 같지 않은 경우가 없는 경우, 참가자(participant) 중 마지막 선수가 완주하지 못한 선수입니다.
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 (!completion[i].equals(participant[i])) {
return participant[i];
}
}
return participant[participant.length-1];
}
}
[모법답안]
해쉬맵을 사용해서 key는 선수 이름 value는 인원수를 적는 것.
전에 푼 방법인데 다시 풀 땐 기억을 못하다가 다른 사람 풀이 보고 기억났음.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> hm = new HashMap<>();
for (String part : participant) {
if (hm.get(part) != null) {
hm.put(part, hm.get(part)+1);
} else {
hm.put(part, 1);
}
}
for (String comp : completion) {
if (hm.get(comp) != 0) {
hm.put(comp, hm.get(comp)-1);
}
}
for (String key : hm.keySet()) {
if (hm.get(key) != 0) {
return key;
}
}
return null;
}
}
728x90
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
1051. Height Checker (0) | 2021.06.15 |
---|---|
1897. Redistribute Characters to Make All Strings Equal (0) | 2021.06.14 |
1431. Kids With the Greatest Number of Candies (0) | 2021.06.10 |
1827. Minimum Operations to Make the Array Increasing (0) | 2021.06.08 |
(아직안끝남)1351. Count Negative Numbers in a Sorted Matrix (0) | 2021.06.02 |