[JAVA 문제 풀이] 393. Maximum Erasure Value

[최대 삭제 값]
Stupefyee's avatar
Jul 22, 2025
[JAVA 문제 풀이] 393. Maximum Erasure Value
notion image
notion image
양의 정수 'nums' 배열이 주어지면 고유한 요소가 포함된 하위 배열을 지우려고 합니다. 하위 배열을 지우면 해당 요소의 합과 같습니다. 정확히 하나의 하위 배열을 지워서 얻을 수 있는 최대 점수를 반환하세요. 배열 'b'가 a의 연속적인 부분열을 형성하는 경우, 즉 어떤 '(l,r)'에 대해 'a[l], a[l+1], ..., a[r]'와 같다면 'a'의 부분열이라고 합니다. 제약 조건: * 1 <= nums.length <= 105 * 1 <= nums [i] <= 104
 

내가 작성한 코드

import java.util.*; class Solution { public int maximumUniqueSubarray(int[] nums) { Set<Integer> set = new HashSet<>(); // 현재 서브배열의 원소 집합 int left = 0; // 왼쪽 포인터 int right = 0; // 오른쪽 포인터 int sum = 0; // 포인터 내부 합 int maxSum = 0; // 최대 값 while (right < nums.length) { // 중복이 아니면 // 포인터를 오른쪽을 이동시키며 값들 증가 if (!set.contains(nums[right])) { set.add(nums[right]); sum += nums[right]; maxSum = Math.max(maxSum, sum); right++; } else { // 중복이 생기면 왼쪽 포인터를 이동시키며 값들 감소 set.remove(nums[left]); sum -= nums[left]; left++; } } return maxSum; } }
Share article

stupefyee