[백준] 10998번 : A×B - JAVA [자바]
https://www.acmicpc.net/problem/10998
10998번: A×B
두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
-
문제

매우 간단한 문제다!
다만 주의할 것이라면 입력이 공백 단위로 주어진다는 것이다.
- 2가지 입력방법을 이용하여 풀이한다.
Scanner로 입력받아 연산하는 방법과 BufferedReader로 입력받아 연산하는 방법, 두 가지 방법을 통해 풀이해보고자 한다.
위 방법은 앞서 포스팅에서도 언급했으니 만약 쓰는 방법을 모른다면 아래 링크를 통해 읽어보는 것을 추천한다.
[백준] 1000번 : A+B - JAVA [자바]
https://www.acmicpc.net/problem/1000 1000번: A+B 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력..
st-lab.tistory.com
※Scanner 와 BufferedReader 의 입력방법에 대해 알아보고자 한다면 아래 링크의 포스팅을 보면 된다.
JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]
이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고 싶은 분들도 있겠..
st-lab.tistory.com
- 풀이
- 방법 1
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int A = in.nextInt(); int B = in.nextInt(); System.out.println(A*B); in.close(); } }
가장 기초적인 입력방법이다!
(앞의 포스팅한 글들과 너무 같은 문제들이라.. 아마 데자뷰를 봤다면 그건 당신이 맞다..)
- 방법 2
BufferedReader 을 쓰는 방식이다.
readLine() 을 통해 입력받아 연산하는 방법 두 가지를 설명할 것이다.
앞서 말했듯이 readLine() 은 한 행을 전부 읽기 때문에 공백 단위로 입력해 준 문자열을 공백 단위로 분리해주어야 문제를 풀 수 있을 것이다.
문자열 분리 방법 두 가지로 풀어 볼 것이다
- StringTokenizer 클래스를 이용하여 분리해주는 방법
- split() 을 이용하는 방법
그리고 반드시 자료형 타입을 잘 보아야 한다.
st.nextToken() 은 문자열을 반환하니 Integer.parseInt()로 int 형으로 변환시켜준다.
// 방법 2-1 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringTokenizer st = new StringTokenizer(str," "); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); System.out.println(a*b); /* 굳이 String 변수 생성 안하고 입력과 동시에 구분자로 분리해줘도 된다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); System.out.println(a*b); */ } }
두 번째 방법은 br.readLine() 을 통해 읽어온 것을 split(" ") 하여 공백 단위로 나눠준 뒤 String 배열에 각각 저장하는 방법이다.
// 방법 2-2 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(" "); int a = Integer.parseInt(str[0]); int b = Integer.parseInt(str[1]); System.out.println(a*b); } }
- 성능 차이

위에서 부터 순서대로
채점 번호 : 17482779 - BufferedReader + split() 사용
채점 번호 : 17482766 - BufferedReader + StringTokenizer 사용
채점 번호 : 17482754 - Scanner 사용
시간을 보면 BufferedReader 와 Scanner 의 성능 차이가 확연하게 나는 것을 볼 수가 있다.
참고로 4초정도가 차이 난다면 이는 서버 성능 상의 차이일 수 있으나 8초 이상은 대개 큰 이변이 없는 한 서버 차이보다는 코드에서 구현한 소스들의 성능 차이라는 점을 알아두면 좋다.
앞으로는 문제에 시간 초과로 인해 못 푸는 문제들이 많이 생길 것이니 꼭 알아두었으면 한다.
- 정리
A+B 를 읽고 오셨다면 아마 두 번째 방법이 금방 이해될 것이다.
괜히 링크 걸은 것이 아니기 때문에 꼭 읽어주셨으면 한다.
'JAVA - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글
[백준] 10869번 : 사칙연산 - JAVA [자바] (8) | 2020.02.08 |
---|---|
[백준] 1008번 : A/B - JAVA [자바] (0) | 2020.02.08 |
[백준] 1001번 : A-B - JAVA [자바] (0) | 2020.02.06 |
[백준] 1000번 : A+B - JAVA [자바] (25) | 2020.02.06 |
[백준] 10172번 : 개 - JAVA [자바] (2) | 2020.02.03 |
댓글을 사용할 수 없습니다.