몽셀통통의 블로그
[BaekJoon] 1261 알고스팟 :: monton 본문
코드
https://www.acmicpc.net/problem/2309
풀이
모든 경우의 수를 판단하는 문제이므로 dfs 사용
오름 차순으로 출력해야 하므로 algorithm 라이브러리에 있는 sort 함수를 사용하여 정렬해주었다
그후 visit 배열로 순차적으로 확인하고 7를 방문했을때 방문한 노드들의 합이 100인지 확인하고
100이면 출력하고 프로그램을 끝낸다
그게 아니라면 반환하여 계속 탐색한다
기본적인 dfs 문제로 1759번 암호 만들기 (https://www.acmicpc.net/problem/1759)와 유사한 문제이다
코드
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 35 | #include <iostream> #include<algorithm> using namespace std; int arr[10], visit[10]; void func(int x, int cnt) { if (cnt == 7) { int num = 0; for (int i = 0; i < 9; i++) { if (visit[i]) num += arr[i]; } if (num == 100) { for (int i = 0; i < 9; i++) if (visit[i]) cout << arr[i]<<endl; exit(0); } else return; } for (int i = x; i < 9; i++) { if (!visit[i]) { visit[i] = 1; func(i, cnt + 1); visit[i] = 0; } } } int main() { for (int i = 0; i < 9; i++) cin >> arr[i]; sort(arr, arr + 9); func(0, 0); } | cs |
'프로그래밍 > 백준 문제 풀기' 카테고리의 다른 글
[BaekJoon] 1941 소문난 칠공주 :: monton (0) | 2018.10.08 |
---|---|
[BaekJoon] 2529 부등호 :: monton (0) | 2018.09.02 |
[BaekJoon] 1759 암호 만들기 :: monton (0) | 2018.08.30 |
[BaekJoon] 2589 보물섬 :: monton (0) | 2018.08.30 |
[BaekJoon] 1261 알고스팟 :: monton (0) | 2018.08.29 |