문제 설명
정수 배열 nums가 주어집니다. nums는 2 * n 개의 정수로 이루어져 있습니다.
다음 조건을 만족하도록 nums를 n개의 짝(pair) 으로 나누어야 합니다:
- 각 요소는 정확히 한 개의 쌍(pair)에만 포함되어야 합니다.
- 각 쌍의 두 요소는 서로 같아야 합니다.
만약 nums를 이러한 방식으로 n개의 쌍으로 나눌 수 있다면 true를 반환하고, 그렇지 않다면 false를 반환하세요.
제한 사항
nums.length == 2 * n1 <= n <= 5001 <= nums[i] <= 500
예시
Example 1:
Input: nums = [3,2,3,2,2,2]
Output: true
Explanation:
There are 6 elements in nums, so they should be divided into 6 / 2 = 3 pairs.
If nums is divided into the pairs (2, 2), (3, 3), and (2, 2), it will satisfy all the conditions.
Example 2:
Input: nums = [1,2,3,4]
Output: false
Explanation:
There is no way to divide nums into 4 / 2 = 2 pairs such that the pairs satisfy every condition.
풀이 흐름
- 문제와 예제를 읽어보면 결국 요구하는 것은 각 숫자들의 갯수가 짝수인지를 물어보는 것입니다.
nums의 범위가 1부터 500까지이기 때문에counts라는 배열을 선언해서 각 숫자의 개수를 기록했습니다.- 숫자의 개수를 다 기록한 뒤
counts를 돌면서 만약 홀수인 숫자가 존재하면 바로false를 반환하고 전체를 다 돌아도 홀수가 없으면true를 반환하도록 구현했습니다.
코드
class Solution {
public boolean divideArray(int[] nums) {
int[] counts = new int[501];
for (int num : nums) {
counts[num]++;
}
for (int count : counts) {
if (count % 2 == 1) return false;
}
return true;
}
}'Algorithm' 카테고리의 다른 글
| LeetCode - 3169. Count Days Without Meetings (0) | 2025.03.24 |
|---|---|
| 브루트포스 (완전 탐색) 알고리즘 (0) | 2025.03.23 |
| 백준 - 16207: 직사각형 (0) | 2025.03.14 |
| LeetCode - 1358. Number of Substrings Containing All Three Characters (1) | 2025.03.11 |
| LeetCode - 3208. Alternating Groups II (1) | 2025.03.09 |