📖 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12924
더보기
문제 설명
Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.
- 1 + 2 + 3 + 4 + 5 = 15
- 4 + 5 + 6 = 15
- 7 + 8 = 15
- 15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.
제한사항- n은 10,000 이하의 자연수 입니다.
🔑 풀이
- 1부터 시작해 연속하는 수를 n이 될때까지 더한다(더한 결과가 n보다 커지면 false)
- true인 경우 answer을 증가시킨다
- 시작하는 수를 1 증가 시킨다
- 위 내용을 시작하는 수가 n/2가 될때까지 반복한다
public class Solution {
public static int solution(int n) {
int answer = 1;
boolean check = true;
for (int startNum = 1; startNum <= n / 2; startNum++) {
int sum = 0;
int j = startNum;
while (true) {
// startNum부터 연속하며 더한다
sum += j;
j++;
if (sum == n) { // n을 만들 수 있다면 true
check = true;
break;
} else if (sum > n) { // n을 만들 수 없다면 false
check = false;
break;
}
}
if (check == true) { // n을 만들 수 있다면 answer++
answer++;
}
}
return answer;
}
}
오~ 이런 구조라면 당연히 효율성 실패하겠는데? 했는데 한번만에 통과함 헤헷
'알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.2] 피보나치 수.java (0) | 2023.04.26 |
---|---|
[프로그래머스 Lv.2] 다음 큰 숫자.java (0) | 2023.04.15 |
[프로그래머스 Lv.2] 혼자서 하는 틱택토.java (1) | 2023.04.10 |
[프로그래머스 Lv.2] 이진 변환 반복하기.java (0) | 2023.04.09 |
[프로그래머스 Lv.2] 올바른 괄호.java (1) | 2023.04.09 |