ejyoo's 개발 노트

10869번 : 사칙연산 본문

문제풀이/백준 입출력과 사칙연산

10869번 : 사칙연산

ejyoovV 2021. 3. 3. 10:42

👉🏻 주의점

  • 입력은 공백으로 구분하여 주어짐
  • 나눗셈 (A/B)의 결과는 몫만 반환

👉🏻 풀이 방법1) Scanner

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();
		
		in.close();
		
		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);
	}
}

👉🏻 풀이 방법2) Scanner - StringBuilder

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();
		
		in.close();
		
		StringBuilder sb = new StringBuilder();
		sb.append(A+B);
		sb.append('\n');
		
		sb.append(A-B);
		sb.append('\n');
		
		sb.append(A*B);
		sb.append('\n');
		
		sb.append(A/B);
		sb.append('\n');
		
		sb.append(A%B);
		
		System.out.println(sb);
	}
}

StringBuilder를 생성하여 하나의 문자열로 연결 해 준 다음 한번에 출력하는 방법이다.

👉🏻 풀이 방법 3) Scanner - BufferedWriter

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class Main {
 
	public static void main(String[] args) throws IOException {
		Scanner in = new Scanner(System.in);
		int A = in.nextInt();
		int B = in.nextInt();
		
		in.close();
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		bw.write((A+B) + "\n");
		bw.write((A-B) + "\n");
		bw.write((A*B) + "\n");
		bw.write((A/B) + "\n");
		bw.write((A%B) + "\n");
		
		bw.flush();
		bw.close();
	}
}

버퍼에 문자열을 담아둔 뒤 한번에 출력한다.

위의 결과보다 더 시간을 단축 시키려면 Scanner 입력방식이 아닌 BufferedReader 입력 방식으로 해야된다.

👉🏻 풀이방법 4) BufferedReader - StringTokenizer ( 출력방식 System.out.println() )

BufferedReader는 Scanner 입력방식보다 훨씬 빠르다.

한 줄로 입력되어 공백 단위로 구별해주어야 하기 때문에 readLine()을 통해 입력 받아야 한다.

readLine()은 한 행을 전부 읽기 때문에 공백단위로 입력해 준 문자열을 공백단위로 분리해주어야 문제를 풀 수 있다.

StringTokenizer는 문자열을 반환하기에 반환되는 값을 Integer.parseInt()로 형변환 시켜준다.

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));
		
		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);
		System.out.println(A-B);
		System.out.println(A*B);
		System.out.println(A/B);
		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);
		System.out.println(A-B);
		System.out.println(A*B);
		System.out.println(A/B);
		System.out.println(A%B);
		
		*/
	}
}

👉🏻 풀이방법 4) BufferedReader - StringTokenizer ( 출력 방식 : StringBuilder )

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));
		
		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str, " ");
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		StringBuilder sb = new StringBuilder();
		sb.append(A+B);
		sb.append('\n');
		
		sb.append(A-B);
		sb.append('\n');
		
		sb.append(A*B);
		sb.append('\n');
		
		sb.append(A/B);
		sb.append('\n');
		
		sb.append(A%B);
		
		System.out.println(sb);
		
		
		
		/*
		굳이 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());
		
		StringBuilder sb = new StringBuilder();
		sb.append(A+B);
		sb.append('\n');
		
		sb.append(A-B);
		sb.append('\n');
		
		sb.append(A*B);
		sb.append('\n');
		
		sb.append(A/B);
		sb.append('\n');
		
		sb.append(A%B);
		
		System.out.println(sb);
		
		*/
	}
}

👉🏻 풀이방법 4) BufferedReader - StringTokenizer ( 출력 방식 : BufferedWriter )

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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());
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		bw.write((A+B) + "\n");
		bw.write((A-B) + "\n");
		bw.write((A*B) + "\n");
		bw.write((A/B) + "\n");
		bw.write((A%B) + "\n");
		
		bw.flush();
		bw.close();
		
		/*
		굳이 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());
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		bw.write((A+B) + "\n");
		bw.write((A-B) + "\n");
		bw.write((A*B) + "\n");
		bw.write((A/B) + "\n");
		bw.write((A%B) + "\n");
		
		bw.flush();
		bw.close();
		
		*/
	}
}

👉🏻 풀이방법 5) BufferedReader - split(" ") (출력방식 : System.out.println() )

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));
		
		String[] str = br.readLine().split(" ");
		int A = Integer.parseInt(str[0]);
		int B = Integer.parseInt(str[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);
	}
}

👉🏻 풀이방법 5) BufferedReader - split(" ") (출력방식 : StringBuilder)

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]);
		
		StringBuilder sb = new StringBuilder();
		sb.append(A+B);
		sb.append('\n');
 
		sb.append(A-B);
		sb.append('\n');
 
		sb.append(A*B);
		sb.append('\n');
 
		sb.append(A/B);
		sb.append('\n');
 
		sb.append(A%B);
 
		System.out.print(sb);
 
	}
 
}

👉🏻 풀이방법 5) BufferedReader - split(" ") (출력방식 : BufferedWriter)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
 
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]);
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		bw.write((A+B) + "\n");
		bw.write((A-B) + "\n");
		bw.write((A*B) + "\n");
		bw.write((A/B) + "\n");
		bw.write((A%B) + "\n");
		
		bw.flush();
		bw.close();
 
	}
 
}

알고리즘 문제 풀 때 대부분 BufferedReader를 사용하고

출력은 데이터가 많은 경우 거의 StringBuilder와 BufferedWriter 두개를 쓴다.

(출력 데이터가 적은경우 손해임 - 상황을 보고 쓰면 됨)

'문제풀이 > 백준 입출력과 사칙연산' 카테고리의 다른 글

1001번 : A-B  (0) 2021.03.03
10998번 : A X B  (0) 2021.03.03
1008번 : A/B  (0) 2021.03.03
10430 번 : 나머지  (0) 2021.03.03
2588번:곱셈  (0) 2021.03.03