반응형
[백준] 10869번: 사칙연산
Java 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
}
}
이 문제는 System.in.read() 메서드 사용 시 결과가 실패로 나오기 때문에 우선 Scanner를 사용해서 입력받았다.
왜 안될까.
그래서 Scanner보다 더 빠른 입력 장치를 찾았다.
BufferedReader.
다들 아시쥬?
BufferedReader를 사용하면 키보드에서 프로그램 중간에 메모리 버퍼를 한 번 거쳐가게 된다.
버퍼를 사용하면 키보드로부터 입력받은 것을 버퍼에 모았다가, 버퍼가 가득 차거나 개행 문자가 들어오면 프로그램에 버퍼에 모아놓았던 것들을 보낸다.
Scanner보다 속도는 비교적 빠르지만 단점이 있다면 무조건 문자열로 읽어오므로 정수형 숫자 같은 경우는 문자열로 받아온 뒤 형변환을 한 번 해주어야 한다.
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Main {
public static void main(String[] args) throws IOException {
String[] param = new BufferedReader(new InputStreamReader(System.in)).readLine().split(" ");
int a = Integer.parseInt(param[0]);
int b = Integer.parseInt(param[1]);
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
}
}
BufferedReader(new InputStreamReader(System.in))을 사용하여 콘솔 창으로부터 입력받는다.
입력받은 것을 readLine() 메서드를 사용해 개행 기준으로 한 줄 읽어오고, split(" ") 메서드를 사용하여 띄어쓰기 기준으로 쪼개 준다. readLine() 메서드를 사용하기 위해 IOException 예외처리를 해주어야 한다.
split() 메서드는 비교적 속도가 느린 측면이라고 해서 StringTokenizer를 사용해 문자열을 쪼개 보기도 했는데, 본 문제 기준으로 수행 속도는 유의미한 차이가 없기 때문에 split() 메서드를 사용하였다.
Python 3 풀이
a, b = map(int, input().split())
print(a + b)
print(a - b)
print(a * b)
print(a // b)
print(a % b)
반응형