공부/알고리즘

딕셔너리

확두뇌 2023. 12. 3. 19:17

nums의 두 원소를 더해 target을 만들 수 있으면 True, 없으면 False return.

input: nums = {4,1,9,7,5,3,16}, target: 14, output: True

input: nums = {2,1,5,7}, target: 4, output: False

input: nums = {2,2,3}, target: 4, output: True

조건: 같은 원소는 중복으로 더할 수 없다.

import java.util.HashMap;

public class DictionaryTesg {
	
	public static boolean dic(int[] nums, int target) {
		HashMap<Integer, Integer> map = new HashMap<>();
		for(int i: nums) {
			map.put(i, map.getOrDefault(i, 0) + 1);
		}
		for(int j=0; j<nums.length; j++) {
			if(map.get(nums[j]) == 1 && nums[j] != target-nums[j] && map.containsKey(target-nums[j])) {
				return true;
			}else if(map.get(nums[j]) > 1 && map.containsKey(target-nums[j])) {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		int[] nums = {4,1,9,7,5,3,16};
		int[] nums2 = {2,1,5,7};
		
		System.out.println(dic(nums, 14));
	}

}