안녕하세요
이번 시간에도 재밌는 알고리즘 문제 하나 가지고 왔습니다.
이건 레벨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));
}
}
알고리즘 노답인 저도 계속 머릿속으로 생각하니 풀어집니다.
포기하는 순간 끝이니 계속해서 도전해보십시오
댓글 없음:
댓글 쓰기