728x90
문제
https://www.acmicpc.net/problem/1789
풀이
처음엔 문제를 읽고 너무 어렵게 생각해서 DP 문제인가 아니면 재귀로 접근해야하나 고민했는데 S가 10인 경우, 100인 경우를 예시로 생각해보니까 단순히 계산해주면 될 것 같아서 단순 계산 문제로 접근했다.
그런데 분명히 답은 맞는데 런타임 에러가 나서 다시 문제를 읽어보니까
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
범위가 딱 long 타입의 범위였다. 그래서 sc.nextLong으로 받아서 해결!
코드
// 1789번 수들의 합
// https://www.acmicpc.net/problem/1789
package BAEKJOON;
import java.util.Scanner;
public class Num1789_수들의합 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long S = sc.nextInt();
long start = 1;
long sum = 0;
while (true) {
sum += start;
if (sum > S) {
start--;
break;
} else if (sum == S) {
break;
}
start++;
}
System.out.println(start);
}
}
728x90