[JAVA 문제 풀이] 409. Bitwise ORs of Subarrays

[서브어레이의 비트 단위 OR]
Stupefyee's avatar
Jul 31, 2025
[JAVA 문제 풀이] 409. Bitwise ORs of Subarrays
notion image
notion image
정수 배열 'arr'이 주어졌을 때, 'arr'의 비어 있지 않은 모든 하위 배열의 비트 단위 OR의 수를 반환합니다. 서브어레이의 비트 단위 OR은 서브어레이의 각 정수의 비트 단위 OR입니다. 한 정수의 서브어레이의 비트 단위 OR은 해당 정수입니다. 서브어레이는 배열 내의 요소들의 연속적인 비어 있지 않은 시퀀스입니다. 제약 조건: * 1 <= ar.length <= 5 * 10^4 * 0 <= arr[i] <= 109
 

내가 작성한 코드

import java.util.*; class Solution { public int subarrayBitwiseORs(int[] arr) { Set<Integer> answer = new HashSet<>(); // 최종 결과 집합 Set<Integer> prev = new HashSet<>(); // 이전 위치까지의 OR 결과 집합 for (int num : arr) { Set<Integer> cur = new HashSet<>(); // 이전 OR 결과들에 대해 현재 수를 OR해서 추가 for (int p : prev) { cur.add(p | num); } // 자기 자신도 추가 (새로운 subarray 시작) cur.add(num); // 이번에 나온 결과들을 전체 집합에 추가 answer.addAll(cur); // 현재 OR 결과들을 다음 반복을 위해 저장 prev = cur; } return answer.size(); } }
Share article

stupefyee