사용한 플랫폼 : Eclipse
1. 1001번(A - B)
문제
두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A-B를 출력한다.
풀이
기초적인 연산 알고리즘 Scanner로 두 숫자를 a와 b에 입력받아 뺄셈한 결과를 출력한다.
package BronzeV;
import java.util.Scanner;
public class AminusB1001 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
scanner.close();
System.out.println(a - b);
}
}
2. 1008번(A / B)
문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-9 이하이면 정답이다.
풀이
Scanner로 a 와 b 를 입력받아 double 형으로 출력 한다.
package BronzeV;
import java.util.Scanner;
public class AdivideB1008 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double a = scanner.nextDouble();
double b = scanner.nextDouble();
scanner.close();
System.out.println(a / b);
}
}
풀이 2
readLine()을 통해 입력 받아 연산하는 방법을 사용한다. readLine()은 한 행을 전부 읽기 때문에 공백단위로 입력해 준 문자열을 공백단위로 분리해주어야 한다.
문자열 분리 방법 두가지가 있다.
- StringTokenizer 클래스를 이용하여 분리하는 방법
- split()을 이용하는 방법
그리고 반드시 자료형 타입을 잘 봐야 한다. st.nextToken()은 문자열을 반환하니 Double.parseDouble()로 double 형으로 변환 시켜준다.
package BronzeV;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class AdivideB1008 {
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," ");
double a = Double.parseDouble(st.nextToken());
double b = Double.parseDouble(st.nextToken());
System.out.println(a/b);
}
}
br.readLine()으로 읽어온 것을 split(“ “) 하여 공백 단위로 나눈 후 String 배열에 각각 저장하여 저장된 배열 원소를 하나씩 꺼내 double형으로 변환 해준다.
package BronzeV;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class AdivideB1008 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
double a = Double.parseDouble(str[0]);
double b = Double.parseDouble(str[1]);
System.out.println(a/b);
}
}
BufferedReader 와 Scanner의 성능차이가 메모리, 시간이 확연하게 빠르다.
데이터가 많아지면 split 메서드보다 StringTokenizer의 성능이 우월하다고 하니 참고해야겠다.