leet 코드 문제
배열이 주어졌을 때, 배열의 요소들중 하나만 있는 값을 더하는 문제이다.
해결방법
먼저 Map을 만들어주고 Map에 어떤 값들을 Key와 Value 로 넣을 수 있을지 생각
문제에서는 Key에 배열의 요소를, Value에 key가 나온 횟수를 카운트 해줬다.
그리고 배열 전체를 읽어준 뒤 value 가 1인 key들의 합을 구해주었다.
코드
class Solution {
public int sumOfUnique(int[] nums) {
// 하나씩만 있는 값들을 더해준다.
// 다 짝수 갯수이면 0 임
Map<Integer, Integer> map = new HashMap<>();
int total = 0;
// 각 값을 먼저 넣어줘야함
for(int n : nums){
// 만약 키로 n 없으면 (n , 1(갯수)) 해주고
// n 이 있다면 (n , 기존값 + 1) 해준다.
if(map.containsKey(n)){
int oldValue = map.get(n);
map.put(n, oldValue+1);
}
else{
map.put(n, 1);
}
}
for( Map.Entry<Integer, Integer> entry : map.entrySet()) {
Integer key = entry.getKey();
Integer val = entry.getValue();
if(val == 1) {
total += key;
}
}
return total;
}
}
class Solution {
public int sumOfUnique(int[] nums) {
// 하나씩만 있는 값들을 더해준다.
// 다 짝수 갯수이면 0 임
Map<Integer, Integer> map = new HashMap<>();
for(int n : nums){
map.putIfAbsent(n , 0);
int oldValue = map.get(n);
map.replace(n, oldValue + 1);
}
int sum = 0 ;
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
int Value = entry.getValue();
if(Value == 1){
sum += entry.getKey();
}
}
return sum;