[1789번] 수들의 합 ( 탐욕법, long - int 자료형 )

Loopy·2023년 12월 4일
0

코테 문제들

목록 보기
36/113

입력값이 너무 크다 (4,294,967,295)

아이디어는 -1, -2 씩 빼주면서 만약에 뺀 값이 i 값보다 크거나 같으면 계속 반복을 해준다.


✅ 런타임 에러

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int i = 1;

		while (n > i) {
			n -= i;
			i++;
		}

		System.out.println(i - 1);
	}
}

테스트 케이스는 잘 통과하는 데 문제가 뭐지..!
아 입력값을 long으로 받아야 하는 구나!

int 형이 몇 자리까지 되는지 한 번 더 정리하면

int (정수)
크기: 4 바이트
표현 범위: -2,147,483,648 ~ 2,147,483,647 

long (정수)
크기: 8 바이트
표현 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 

그리고 하나 더!
1일 때 1을 출력해줘야 한다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();
		long i = 1;

		if (n == 1) {
			System.out.println(1);
			return;
		}

		while (n >= i) {
			n -= i;
			i++;
		}

		System.out.println(i - 1);
	}
}

profile
잔망루피의 알쓸코딩

0개의 댓글