문제
Task Score
100%
Correctness
100%
Performance
100%
문제 풀이 1 (첫 풀이)
import java.util.*;
public class L2_OddOccurrencesInArray {
public static void main(String[] args) {
int[] candiArr = {9, 3, 9, 7, 3, 9, 9};
Map<Integer, Integer> candiMap = new HashMap<>();
for (int i = 0; i < candiArr.length; i++) {
if(candiMap.containsKey(candiArr[i]))
candiMap.put(candiArr[i], candiMap.get(candiArr[i]) + 1);
else
candiMap.put(candiArr[i], 1);
}
for(int candi : candiMap.keySet()){
if(candiMap.get(candi) % 2 == 1){
System.out.println(candi);
break;
}
}
}
}
Map을 사용하여 value에 카운트를 남기고 마지막에 홀수만 찾는 로직이 마음에 안들어 조금 더 개선해보았다.
문제 풀이 2 (개선)
import java.util.*;
public class L2_OddOccurrencesInArray {
public static void main(String[] args) {
int[] candiArr = {9, 3, 9, 7, 3, 9, 9};
Set<Integer> candiSet = new HashSet<>();
for (int i = 0; i < candiArr.length; i++) {
if(candiSet.contains(candiArr[i]))
candiSet.remove(candiArr[i]);
else
candiSet.add(candiArr[i]);
}
int answer = candiSet.iterator().next();
System.out.println(answer);
}
}
굳이 Map에 담아뒀다가 또 for문을 돌리는게 아닌, set의 remove와 add를 사용하여 짝수면 결국 마지막에 사라지는것을 생각하여 구현하였다.
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[Java] Codility - PermMissingElem 문제 풀이 (0) | 2022.09.05 |
---|---|
[Java] Codility - FrogJmp 문제 풀이 (0) | 2022.09.05 |
[Java] Codility - CyclicRotation 문제 풀이 (1) | 2022.09.05 |
[Java] Codility - BinaryGap 문제 풀이 (0) | 2022.09.03 |
[Java] 백준 숫자 카드 - 10815번 (0) | 2022.08.03 |
댓글