Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 알고리즘
- LIS #Algorithm #요소추적
- 중반부
- 삼성 #코테 #2020상반기 #c++
- 투포인터
- 백준
- 카카오인턴
- 코테
- 카카오
- c++
- 스마일게이트
- Union-find
- 소감
- 코딩테스트
- 유니온파인드
- BaekJoon
- 보석쇼핑
- 1편
- Algorithm
- 서버개발캠프
- BFS
- 식단
- Smilegate
Archives
- Today
- Total
짱아의 개발 기록장
LeedCode : 40. Combination Sum II 본문
반응형
앞서 풀었던 Combination Sum 과 매우 유사한 문제이다.
하지만, 이 문제는 중복허용이 되지 않는 다는 것!
[메인 로직]
ex) 10, 1, 2, 7, 6, 1, 5 / target = 8이라면
먼저 오름차순 정렬해준다.
1, 1, 2, 5, 6, 7, 10 으로 정렬된 상태에서 idx = 0부터 target = 8인 조합을 찾아나가면
[1, 2, 5]를 완성할 수 있다.
하지만 idx = 1도 '1'이기 때문에 중복된 결과를 만들게 된다.
따라서, 중복된 값을 만들지 않기 위해!!
for문 탐색할 때, if(i>start && candidates[i]==candidates[i-1])이라면 continue를 해서 중복을 막았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | class Solution { public: vector<vector<int>> ans; map<int, int> m; void dfs(int sum, vector<int>& v, vector<int>& candidates, int target, int start){ if(sum>target){ return; } if(sum==target){ ans.push_back(v); return; } for(int i=start; i<candidates.size(); i++){ if(i>start && candidates[i]==candidates[i-1]) continue; v.push_back(candidates[i]); dfs(sum+candidates[i], v, candidates, target, i+1); v.pop_back(); } } vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { sort(candidates.begin(), candidates.end()); for(int i=0; i<candidates.size(); i++){ if(m.count(candidates[i])!=0) continue; m[candidates[i]] = 1; vector<int> temp; temp.push_back(candidates[i]); dfs(candidates[i], temp, candidates, target, i+1); } return ans; } }; | cs |
반응형
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode : 104. Maximum Depth of Binary Tree (0) | 2021.01.06 |
---|---|
LeetCode : 53. Maximum Subarray (0) | 2021.01.04 |
LeetCode : 39. Combination Sum (0) | 2021.01.03 |
LeetCode : 103. Binary Tree Zigzag Level Order Traversal (0) | 2021.01.02 |
LeetCode : 102. Binary Tree Level Order Traversal (0) | 2021.01.01 |
Comments