꼬마 정민 풀이

2023. 6. 8. 09:52BaekJoon/입출력과 사칙연산

문제내용

사용자에게 3개의 숫자를 입력받아 각 수를 더하는 문제이다.


풀이

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long num1 = Long.parseLong(sc.next().replace(" ", ""));
		long num2 = Long.parseLong(sc.next().replace(" ", ""));
		long num3 = Long.parseLong(sc.next().replace(" ", ""));
		System.out.println(num1+num2+num3);
	}
}

사용자에게 임의의 수를  받기 위해 Scanner를 사용하였고 임의의 수를 첫번째 줄에 공백을 두고 주어진다고 했다. 처음에 생각했던게 그럼 문자열로 받아서 공백을 잘라 받으면 되겠다고 생각했다. 

문자열로 받은 후 replace를 이용해 공백을 제거하고 문자열을 long 자료형으로 형변환 시켜주기 위해 Long.parseLong 메소드를 이용했다. 마지막으로 num1과 num2와 num3을 더했다.

지금 생각해보니 콘솔에 공백으로 구분자를 둬서 입력을 한다면 문자열로 받지않고 바로 long타입으로 받았어도 됐을 것 같다. 막상 코드를 짤 때는 문제가 없어보이는데 짜고 나면 너무 어렵게 돌아가려고하는 것 같다..😂

 


겪었던 문제

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = Integer.parseInt(sc.next().replace(" ", ""));
		int num2 = Integer.parseInt(sc.next().replace(" ", ""));
		int num3 = Integer.parseInt(sc.next().replace(" ", ""));
		System.out.println(num1+num2+num3);
	}
}

이렇게 제출하면 NumberFormatException이 발생한다. 왜일까? 기본적으로 NumberFormat 예외가 나는 이유는 문자열을 수로 변환할 때 발생하는 에러이다.

이에 내가 생각하는 이유는 형변환을 int 자료형으로 시키려고 해서 나는 오류이다. 문제에서는 사용자가 임의로 주는 수의 범위는 (1 ≤ A, B, C ≤ 10^12)이다. 이 범위는 int 자료형이 수용할 수 있는 범위를 초과한 범위이다. 그렇기 때문에 풀이처럼 long타입으로 변환시켜주어야 한다.

'BaekJoon > 입출력과 사칙연산' 카테고리의 다른 글

개 풀이  (0) 2023.06.08
고양이 풀이  (0) 2023.06.08
곱셈 풀이  (0) 2023.06.08
나머지 풀이  (0) 2023.06.07
1998년생인 내가 태국에서는 2541년생?! 풀이  (0) 2023.06.07