leetcode 1748_Map

권권·2023년 3월 16일
0

Java 예제🛒

목록 보기
6/14
post-thumbnail

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;
profile
안녕하세요

0개의 댓글