300x250
https://www.acmicpc.net/problem/10869
문제
문제를 읽고 특별히 주의해야 할 점은 나눗셈 결과가 실수가 아닌 정수. 즉 몫만 반환 한다는 것이다.
풀이
- 방법 1Scanner 표준입력를 이용한 기초적인 방법이다.
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);
}
}
- 방법 2BufferedReader 표준 입력을 이용한 방법이다: Scanner와 유사
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); // 선언
String s = bf.readLine();
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
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);
}
}
기존에 쓰던 Scanner 보다 속도 측면에서 훨씬 빠르기 때문에
(입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성을 높임)
많은 양의 데이터를 처리할때 유리
받는 데이터는 String 으로 고정되기 때문에 입력 받은 데이터를 가공해야 하는 작업이 필요
import를 *로 받으면 해당 디렉터리의 패키지를 모두 받음. (그만큼 효율에선 안좋음)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
Scanner처럼 import 받은 패키지들이다.
* BufferedReader 은
입련은 readLine(); 이라는 메서드를 활용하는데, 주의점 2가지가 있다.
첫번째는 리턴값을 String 으로 고정되기에 String이 아닌 다른타입으로 입력을 받으려면 형변환을 꼭 해주어야 한다.
두번째는 예외처리를 꼭 해주어야 한다. readLine을 할때마다 try & catch를 사용해 주어도 되지만
대부분 throws IOException을 통해 작업한다.
Read한 데이터는 Line 단위로 나눠지기에 공백단위로 데이터를 가공하려면 따로 작업을 해주어야 한다.
StringTokenizer에 nextToken() 함수를 쓰면 readLine() 을 통해 입력받은 값을 공백단위로 구분하여
순서대로 호출 할 수 있다.
마치며
앞으로는 다양한 입/출력 방법으로 문제를 풀어보는 것을 권장한다.
다음은 *System.out.println() 와 유사한 *BufferedWriter를 같이 사용하며 문제를 풀어보겠다.
300x250
'Progamming > BAEK JOON > 백준의 알고리즘' 카테고리의 다른 글
[백준] 10171번 : 고양이 - JAVA (0) | 2023.02.07 |
---|---|
[백준] 3003번 : 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA (0) | 2023.02.07 |
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! (0) | 2023.02.07 |
[백준] 1008번 : A/B - JAVA (0) | 2023.02.07 |
[백준] 1000번 : A+B - JAVA / 자바 Scanner (0) | 2023.02.06 |