Subsets

유승선 ·2022년 1월 5일
0

LeetCode

목록 보기
10/121

조합(Combination) 문제이다. 처음 이 문제를 접했을때는 많이 헷갈렸고 backtracking 의 원리를 이해를 못했지만 다시 풀어보다보니 기억이 점점 살아나서 답을 안보고도 문제를 풀수있었다. 중복되는 숫자가 없는 벡터안에서 중복없는 모든 조합을 구하는 문제인데 시행착오가 좀 있었다.

"분명히 이런식으로 풀었던거 같은데.." 하는 안일하게 남아있는 기억속에서 중복이 없는 조합을 구해야하는 문제인데 조합 유형의 문제가 아닌 순열 문제를 풀고있었다. 조합에서 중요한점은 123 과 213 은 엄연히 다른 숫자로 나와야하는것인데 중요한점을 잊고있었다. for(int i = 0;..) 를 설정한게 내 큰 실수라는걸 알게되었던 이유에는 재귀가 끝나고 backtracking 과정에서 어쩔수없이 처음 숫자부터 조합을 짠다는걸 눈치채고는 바로 올바른 코드로 바꿔주었다.

dfs 과정에서 임의에 index를 설정함으로서 중복된 숫자를 조합에 넣는일을 없애고 중복없는 조합을 만드는데 성공했다. 예전에 i 를 index로 설정하는것과 0으로 설정하는것에 차이가 너무 헷갈렸는데 이제야 좀 알거같다.

배운점:
1. 단순암기만 하지말고 코드를 이해하자
2. 재귀함수에서 과정은 중요하다. 항상 머리속에서 계산하는걸 익숙해지자.

profile
성장하는 사람

0개의 댓글