[백준] 수들의 합 1789번
나의 풀이
public class SumOfNumbers {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long N = Long.parseLong(br.readLine());
long sum = 1;
long count = 1;
while(sum <= N) {
sum += ++count;
}
System.out.println(count - 1);
}
}
- 문제에는 패턴? 같은게 존재한다.
1 + 2 + 3 ... + n 과 같이 1씩 증가시키면서 계속 더하다가 N보다 커졌을 때 n - 1을 해주면 해당 숫자를 이루는 자연수의 최대갯수를 구할 수 있다.
- 우선 숫자의 범위가 크기 때문에 int형으로 하면 런타임 에러가 발생한다. 때문에 모든 숫자는 안전하게 long으로 대체하였다.
- 1부터 N보다 커질 때 까지 1씩 증가하며 숫자를 더해준다.
- sum이 N보다 커지면 count 에서 -1을 하여 출력해준다.