티스토리 뷰
재귀 함수를 이용하면 쉽게 풀이가 될 거 같아서 재귀 함수를 이용하여 보았다.
main에서 n만큼 for문을 돌린다. i의 범위는 1부터 n(1부터 n까지 차례대로 덧셈을 하면서 딱 n값이 나오면 true값을 리턴하는 recursive 함수를 만들었다.)
recursive함수 내에서 n보다 작을 경우 계속 재귀함수를 호출하면서 값을 키워나간다. 그러다가 n과 같아지면 flag 값을 true로 반환하고 main에서 받은 flag 값이 true일 경우만 answer 값을 ++한다.
[내 코드]
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++) {
if(i==n){
answer++;
break;
}
int cnt = i + 1;
boolean flag = recursive(i, n, cnt);
if(flag==true){
answer++;
}
}
return answer;
}
public static boolean recursive(int i, int n, int cnt) {
boolean flag=false;
int tmp = i + cnt;
if (tmp <= n) {
if (tmp == n) {
return true;
}
cnt++;
flag=recursive(tmp, n, cnt);
}
return flag;
}
}
'알고리즘' 카테고리의 다른 글
<Programmers> 피보나치 수 (0) | 2020.04.29 |
---|---|
<Programmers> 최솟값 만들기 (0) | 2020.04.29 |
<Programmers> 최댓값과 최솟값 (0) | 2020.04.29 |
<Programmers> 땅따먹기 (0) | 2020.04.28 |
<Programmers> 다음 큰 숫자 (0) | 2020.04.28 |