이번 문제는 저번 문제와 같이 두 숫자 값을 입력받아 계산값을 내는 동일 유형의 문제인데, 저번 포스팅에서는 간단하게 Scanner를 이용해서 풀어봤지만 이번에는 저번에 참고하겠다고 첨부했던 포스팅을 보고 BufferedReader와 StringTokenizer를 이용해서 풀어봤다.
[백준] 1단계 1000번 - A+B (JAVA)
이번 문제는 두 개의 숫자를 입력받아 그 합을 출력하는 문제이다. 내가 기억하기로는 값을 입력받는 방법에 여러가지가 있었던 것 같은데 레퍼런스 없이 바로 적으려니 기억나는 것이 Scanner밖
zzzin.tistory.com
이번 문제에서 쓴 BufferedReader 역시 Scanner와 동일하게 콘솔창에서 키보드를 통해 값을 입력받아 처리하는 것이므로 System.in 사용
BufferedReader를 이용하여 입력받은 값은 String형이며, 두 개의 값을 한번에 입력받았으므로 각각 분리하여 계산하기 위해 StringTokenizer를 사용한다.
str변수 안에 담겨있는 String형의 두 숫자값은 띄어쓰기로 구분되어 있기 때문에 StringTokenizer에서 쓸 구분자는 " "로 지정하여 두 숫자값을 분리한 후 st변수 안에 두 개의 분리된 값을 담아준다.
그러나 st안에 담긴 두 개의 값은 아직 String형이라 숫자계산이 되지 않으므로 Integer.parseInt를 통해 숫자형으로 변환시킨 후 변수 A, B에 담아준 후 계산하도록 한다.
또한 BufferedReader를 사용했으므로 다음과 같이 예외처리를 해주어야 한다. 어차피 안하면 편집기에서 예외처리가 필요하다고 오류가 뜨므로 자동으로 하게 된다.
1008번의 나눗셈문제 역시 동일한 방식으로 풀었으나, 정수형 간의 계산은 무조건 소수점 뒷자리들이 없는 정수형만을 반환하기 때문에 두 숫자 중 한개 이상을 반드시 실수형으로 변환해줘야 한다는 점만이 달랐으므로 그 부분 만을 첨부함.
다음과 같이 문자열 형식으로 입력된 두 숫자 중 하나만 int형이 아닌 실수형인 double형으로 변환하여 나눗셈 계산을 하면 결과값도 문제 없이 실수형으로 소수점자리까지 출력된다. ( 두 숫자 모두 실수형으로 변환하여도 상관 없음 )
'코딩테스트 연습' 카테고리의 다른 글
[백준] 2588번 - 곱셈 (JAVA) (0) | 2022.01.30 |
---|---|
[백준] 10998번 - A*B (JAVA) (0) | 2022.01.30 |
[백준] 1000번 - A+B (JAVA) (0) | 2022.01.30 |
[백준] 10172번 - 개 (JAVA) (0) | 2022.01.30 |
[백준] 10171번 - 고양이 (JAVA) (0) | 2022.01.29 |