https://www.acmicpc.net/problem/2018
백준 2018 번 문제

처음 문제 풀었을 때, 배열에 다 집어넣고 for 문 돌려서 더해서 N 값 비교하고 이런식으로
문제를 풀려고 했으나, 코딩테스트를 준비하고 있기 때문에 시간복잡도를 생각하고 문제를 풀어야한다.
지금 인프런에 강의 듣고, 조금 충격 받은게 뭐냐면
아.. 이런식의 투포인트 방식으로도 이런 수들 합 문제를 풀 수 있구나
처음 접한 알고리즘이라서 바로 이해는 어려웠지만, 대충 설명 들으니까 이해는 됐다.
이걸 내껄로 만들기위해서 다시 코드도 짜보고 정리하는 중 입니다.
package inflearn;
import java.util.IllegalFormatCodePointException;
import java.util.Scanner;
public class B_2018 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int count = 1;
int sum = 1;
int end_index = 1;
int first_index = 1;
while (end_index != N){
if (sum == N){
count++;
end_index++;
sum = sum + end_index;
} else if (sum > N) {
sum = sum - first_index;
first_index++;
}else if(sum < N ){
end_index++;
sum = sum + end_index;
}
}
System.out.println(count);
}
}
여기에서 count를 1 로 시작하는 이유는 N 값 그 자체를 이미 포함해 count++