숫자의 표현 알고리즘 문제

안녕하세요

이번 시간에도 재밌는 알고리즘 문제 하나 가지고 왔습니다.

이건 레벨4짜리 문제로 못풀거라고 생각하고 일단 도전했으나

기분 좋게 풀려서 올려봅니다.

문제는 다음과 같습니다.


수학을 공부하던 민지는 재미있는 사실을 발견하였습니다. 그 사실은 바로 연속된 자연수의 합으로 어떤 숫자를 표현하는 방법이 여러 가지라는 것입니다. 예를 들어, 15를 표현하는 방법은
(1+2+3+4+5)
(4+5+6)
(7+8)
(15)
로 총 4가지가 존재합니다. 숫자를 입력받아 연속된 수로 표현하는 방법을 반환하는 expressions 함수를 만들어 민지를 도와주세요. 예를 들어 15가 입력된다면 4를 반환해 주면 됩니다.



저의 풀이는 아래와 같습니다~!


public class Expressions {

public int expressions(int num) {
int answer = 0;
int[] arr = new int[num+1];
for(int i=0; i<num; i++){
arr[i] = i+1;
}

for(int j=0; j<arr.length-1; j++){
for(int sp=0; sp<arr.length-1; sp++){
arr[j]+=arr[sp+(j+1)];
if(arr[j]==num){
answer++;
break;
}else if(arr[j]>num){
break;
}
}
}
return answer;
}

public static void main(String args[]) {
Expressions expressions = new Expressions();
// 아래는 테스트로 출력해 보기 위한 코드입니다.
System.out.println(expressions.expressions(15));
}

}

알고리즘 노답인 저도 계속 머릿속으로 생각하니 풀어집니다.

포기하는 순간 끝이니 계속해서 도전해보십시오