티스토리 뷰
Division (Division.cpp)
문제
임의의 자연수는 그보다 작은 자연수들의 합으로 표현될 수 있다. 예를 들어 4의 경우,
4 = 3+1
= 2+2
= 2+1+1
= 1+1+1+1
위와 같은 방법으로 표현 될 수 있다. 이 때 , 숫자의 구성이 같으면서 그 순서만이 다른 경우는 같은 경우로 생각하는데, 예를 들어 다음 세 가지 경우는 모두 같은 경우이다.
2 + 1 + 1, 1 + 2 + 1 , 1 + 1 + 2
자연수 n을 입력 받아 이를 n보다 작은 자연수들의 합으로 나타내는 방법을 모두 출력하는 프로그램을 재귀 호출을 사용하여 작성하시오.
입력
첫 줄에 2 이상 20 이하의 자연수 n이 주어진다.
출력
첫째 줄부터 모든 방법을 한 줄에 하나씩 출력한다. 하나의 식 안에는 큰 숫자가 앞으로 오도록 하 고, 전체적으로는 앞의 숫자가 큰 식이 먼저 출력되도록 한다. 숫자와 더하기 사이에는 공백이 없다. 그리고 마지막 줄에는 나누어진 자연수의 개수를 출력한다.
예제 입력
5
예제 출력
4+1
3+2
3+1+1
2+2+1
2+1+1+1
1+1+1+1+1
6
코드
// 자연수의 합
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static ArrayList<Integer> box = new ArrayList<>();
public static int count = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//총 몇개의 숫자를 입력 받을 것인지
int a;
int b = 0;
int c = 0;
a = sc.nextInt();
// b = sc.nextInt();
c = b;
naturalSum(a,a-1,0,"");
System.out.println(count);
}
public static void naturalSum(int k, int n, int sum, String x) {
if(n <= 0 || sum > k) return;
else if(sum == k) { // 끝에서 "+" 빼야함
System.out.println(x.substring(0,x.length()-1));
count++;
} else {
if(n + sum > k) {
while (n+sum > k) {
n--;
}
}
naturalSum(k, n,sum+n, x+ n + "+" );
naturalSum(k, n-1,sum, x);
}
}
}
'알고리즘 문제 풀이 ' 카테고리의 다른 글
좋은 수열 찾기 (0) | 2018.09.18 |
---|---|
이진 트리 순회 (0) | 2018.09.18 |
소들의 줄세우기 (0) | 2018.09.18 |
달팽이 그리기 (0) | 2018.09.17 |
단지번호 붙이기 (0) | 2018.09.17 |
백준 스택 수열 1874번 (0) | 2018.07.03 |
weird (0) | 2018.07.01 |
XHAENEUNG - 똥 같은 코드 (0) | 2018.01.29 |
- Total
- Today
- Yesterday
- java #알고리즘 #백준 #패션왕신해빈
- webspider
- javascript #백준 #알고리즘 #LCS
- 쿼드트리
- webpack
- java #백준 #알고리즘 #로또 #6603
- 1992번
- TypeScript
- Game
- 색종이자르기
- javascript #연속합 #알고리즘 #백준
- java #알고리즘 #백준 #퇴사
- javascript #백준 #회의실배정 #알고리즘
- Terminal
- java #하노이 #알고리즘 #백준
- java #알고리즘 #백준
- Javascript
- 알고리즘
- 2630번
- react
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
- java #알고리즘 #백준 #N과M #백트래킹
- 한글 자동 완성
- 백준 #java #알고리즘
- npm
- 백준
- java #백준 #알고리즘 #2805 #나무자르기
- java #퀵소트 #quicksort #알고리즘 #백준
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- java #오르막수 #백준 #알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |