문제 바로가기 : https://www.acmicpc.net/problem/2018
메모리 : 14176KB
시간 : 164ms
언어 : Java 11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int left = 1;
int right = 1;
int cnt = 0;
int sum = 1;
while (left <= N) {
if (sum == N) {
cnt++;
sum += ++right;
} else if (sum < N) {
sum += ++right;
} else if (sum > N) {
sum -= left++;
}
}
System.out.println(cnt);
}
}
무난한 그리디 문제. 슬라이딩 윈도우 연속된 수의 합을 구해야 하기 때문에 왼쪽 끝과 오른쪽 끝을 상정하여 하나씩 옮겨가면서 그 안의 합이 N인지 검사하면 된다.
'Algorithm' 카테고리의 다른 글
[Algo] 백준 19699 소-난다JAVA (0) | 2024.05.08 |
---|---|
[Algo] 백준 20115 에너지 드링크 JAVA (0) | 2024.05.08 |
[Algo] 백준 3359 사각 사각 JAVA (0) | 2024.05.08 |
[Algo] 백준 1051 숫자 정사각형 JAVA (0) | 2024.05.08 |
[Algo] 백준 3010 페그 JAVA (0) | 2024.05.08 |