leet 코드 문제
2의 배수의 갯수가 들어있는 배열이 주어졌을 때, 배열안의 요소들을 2개씩 짝지어서 짝이 모두 지어지면 true 를, 그렇지 않으면 false를 반환하는 문제이다.
해결방법
key와 value 을 어떻게 설정해주는지가 중요하였다.
주어진 배열을 일정한 규칙으로 Map에 넣어 주는데, Key는 배열의 요소, Value는 배열의 갯수를 가질 수 있게 하였다.
그리고 key를 먼저 넣어준 뒤, 만약 같은 값을 가진 key가 있다면 기존 Value + 1을 해주는 방식을 취하였다.
코드
class Solution {
public boolean divideArray(int[] nums) {
// 같은 값을 2개 씩 묶을 수 있는가
// 어떤 요소가 짝수갯수 인가?
// 숫자, 숫자의 갯수
Map<Integer, Integer> map = new HashMap<>();
// 각 값이 몇개인지 세는 코드
for ( int n : nums){
if(map.containsKey(n)){
// 키 n의 value를 1 더해서 다시 entry에 넣는다.
int oldValue = map.get(n);
map.put(n, oldValue+1);}
else {
map.put(n,1);
}
}
// value가 홀수인게 있으면 false
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
int v = entry.getValue();
if(v % 2 == 1){
return false;
}
}
return true;
}
}