Problem
Solution
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return 하는 문제이다.
1. 1 부터 n의 길이의 반만큼 반복하면서 for문 안에 이중 for문으로 연속된 숫자들을 더해준다.
2. 더한 숫자가 n이랑 같으면 asnwer++해준다.
3. 이와 같은 방법을 n의 길이의 반만큼 반복한다.
class Solution {
public int solution(int n) {
//자기 자신은 무조건 포함되므로 1로 시작
int answer = 1;
//n의 반보다 크면 그 값은 자기 자신보다 크므로 반값만
for(int i = 1; i <= n / 2; i++) {
int sum = 0;
for(int j = i; sum < n; j++) {
sum += j;
}
if(sum == n) {
answer++;
}
}
return answer;
}
}
자기 자신은 무조건 답이므로 answer = 1로 시작한다. 그리고 반 이상이 되면 어떤 수를 더하더라도 자신보다 커지기 때문에 2로 나눈 값만큼만 경우의 수를 구하면 된다.
마치며
이번 문제는 간단한 문제였다. 혹시 다른 풀이나 더 좋은 방법이 있으면 댓글 남겨주시면 감사하겠습니다 :)
반응형
'백준 Algorithm' 카테고리의 다른 글
[프로그래머스] 덧칠하기 (0) | 2023.04.13 |
---|---|
[프로그래머스] 이진 변환 반복하기 Java 풀이 (0) | 2023.04.06 |
[프로그래머스] 다음 큰 숫자 Java 풀이 (0) | 2023.04.05 |
[프로그래머스] 문자열 나누기 Java 풀이 (0) | 2023.03.15 |
[프로그래머스] 대충 만든 자판 Java 풀이 (2) | 2023.03.13 |