백준 1789번: 수들의 합

Jeongwoo Kim·2022년 3월 30일
0

문제 링크

최대한 많은 수로 이루어져야 하므로, 1부터 차례대로 더한 합을 입력받은 값과 비교하면 되는 문제다.

자바를 이용한 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BaekJoon1789 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		long s = Long.parseLong(br.readLine());	// 1 ≤ S ≤ 4,294,967,295 이므로 long으로 선언
		long sum = 0;							// 1부터 차례대로 더하면서 sum이 s보다 크거나 같을 때 반복문 정지 
		int i = 0;								// 인덱스
		
		while(sum < s) {						
			i++;
			sum += i;
		}
		
		if(sum > s) {							// sum이 s보다 크다면
			i--;								// s - 마지막 인덱스까지 더한 값을 마지막 인덱스에 더해줌
		}
		
		System.out.print(i);

	}
	
}

복기

입력받는 s의 크기가 정수형의 범위를 한참 벗어나므로 long으로 선언해주어야 한다.

0개의 댓글

관련 채용 정보