본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 1863. Sum of All Subset XOR Totals

반응형

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);
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.