반응형
https://leetcode.com/problems/sum-of-all-subset-xor-totals/description/
전수조사로 해결한 문제였습니다.
📕 풀이방법
📔 풀이과정
dfs를 수행하며 현재 원소를 선택한 경우, 선택하지 않은 경우를 나눠 재귀함수를 수행해줍니다.
1. 종료조건은 현재 index가 nums.size()인 경우이며 이 경우에 인자인 currentXOR의 최종 값을 반환해줍니다.
2. 현재 index로 xor 연산을 한 값을 include로, 하지 않은 값은 exclude로 재귀함수를 호출한 결과를 저장하고 해당 함수의 끝에 include + exclude 값을 반환함으로써 중간 값을 얻을 수 있습니다.
📔 정답 출력 | 반환
dfs함수의 결과를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
int dfs(vector <int> nums, int idx, int currentXOR) {
if(idx == nums.size()) {
return currentXOR;
}
int include = dfs(nums, idx+1, nums[idx] ^ currentXOR);
int exclude = dfs(nums, idx+1, currentXOR);
return include + exclude;
}
int subsetXORSum(vector<int>& nums) {
return dfs(nums, 0, 0);
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.