티스토리 뷰
반응형
문제
N입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요.
만약 N=15이면
7+8=15
4+5+6=15
1+2+3+4+5=15
와 같이 총 3가지의 경우가 존재한다.
입력
첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어집니다.
출력
첫 줄에 총 경우수를 출력합니다.
예시 입력
15
예시 출력
3
문제 풀이
[첫번째 풀이]
import java.util.*;
public class Main {
public int solution(int n) {
int sum = 0, count = 0, start = 1;
for (int i=1; i<n; i++) {
sum += i;
while (sum > n) {
sum -= start;
start++;
}
if (sum == n) count++;
}
return count;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Main main = new Main();
System.out.println(main.solution(n));
}
}
(Time 161ms / Memory 27MB)
- for 문을 돌면서 앞에서부턴 더하고, 기준점을 넘어가면 앞에서부터 빼는 식으로 개수를 구해간다.
반응형
'Java > Coding Test' 카테고리의 다른 글
[코딩테스트] 최대 길이 연속부분수열 (0) | 2022.03.21 |
---|---|
[코딩테스트] 연속 부분수열 (0) | 2022.03.21 |
[코딩테스트] 최대 매출 (0) | 2022.03.17 |
[코딩테스트] 공통원소 구하기 (0) | 2022.03.14 |
[코딩테스트] 두 배열 합치기 (0) | 2022.03.13 |