https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
주의점
- 입력이 공백 단위로 주어진다.
- 상대오차 또는 절대오차 범위 이하여야 한다.
유사 문제 유형
https://unknownomad.tistory.com/34
[백준] 1000 - 입출력과 사칙연산 : A+B
https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 주의점: 입력이 공백 단위로 주어진다. 답안 1. Scanner impo..
unknownomad.tistory.com
입력 방식
1. Scanner
- 가장 기본적인 입력 방식
- in.next(): 문자열 입력 시 공백 전까지만 받음(에러나는 경우 多)
- in.nextLine(): 문자열 입력 시 Enter 입력 전까지만 받음(사용 권장)
2. BufferedReader
- Scanner 입력 방식보다 훨씬 빠른 성능
2.1. 문자열 받는 대표적인 방법
- read(): 한 문자만 읽어오기
- readLine(): 한 행 읽어오기(사용 권장)
➡ readLine()은 한 행을 전부 읽기에 공백 단위로 입력해준 문자열을 다시 공백 단위로 분리해줘야 함
2.2. 문자열 분리 방법
2.2.1. StringTokenizer 클래스
- split()보다 성능 좋음(단순 규칙으로 문자열 분리하거나 데이터가 더 많아질 때 추천)
2.2.2. split()
- StringTokenizer 클래스와 split() 모두 문자열을 반환하기에 자료형 타입 확인 후 형변환 유의하기
- double형으로 풀면 나머지가 정수로 나와도 소수점까지 같이 출력되어 오답으로 처리됨
풀이
1. Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in); //객체 생성
//여기서의 System.in: 입력한 값을 Byte 단위로 읽는다는 의미
//오차범위 조건 충족을 위해 반드시 double형으로 출력
double A = in.nextDouble();
double B = in.nextDouble();
in.close(); //필수는 아니나, close()해줘야 리소스 누수 방지함
System.out.println(A / B);
}
}
2. BufferedReader
2.1. StringTokenizer 클래스
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//long ver.
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str, " "); //StringTokenizer("문자열", 구분자);
//short ver.
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
//nextToken(): 구분된 변수 꺼낼 때 문자열 반환해줌
//이때 문자열 반환됨과 동시에 해당 객체에서 사라짐
//Double.parseDouble(): 문자열 반환했으니 double 형으로 변환
double A = Double.parseDouble(st.nextToken());
double B = Double.parseDouble(st.nextToken());
System.out.println(A / B);
}
}
2.2. split()
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//readLine() 통해 읽어와 ➡ split(" ")으로 공백 단위로 분리
String[] str = br.readLine().split(" ");
//String 배열에 각각 저장
double A = Double.parseDouble(str[0]);
double B = Double.parseDouble(str[1]);
System.out.println(A / B);
}
}
성능 순서
- BufferedReader + StringTokenizer
- BufferedReader + split()
- Scanner
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 10430번 : 나머지 - Java (0) | 2022.01.05 |
---|---|
[백준] 10869번 : 사칙연산 - Java (0) | 2022.01.04 |
[백준] 10998번 : A x B - Java (0) | 2021.12.23 |
[백준] 1001번 : A - B - Java (0) | 2021.12.22 |
[백준] 1000번 : A + B - Java (0) | 2021.12.21 |
댓글