ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준, 10998번] 4단계) A×B - JAVA 풀이
    Algorithm&BAEKJOON(백준)/1단계) 입출력과 사칙연산 2023. 4. 13. 17:08
    728x90

     

    백준 [10998번] - A×B

    https://www.acmicpc.net/problem/10998

     

    10998번: A×B

    두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.

    www.acmicpc.net

     


     

    # 문제 해설 

     

    A×B[10998]

    A와 B를 입력받아 A×B를 하여 결과를 내는 것이 목표.

    이전 3단계 문제에서 '연산 기호'만 변경하면 된다.  ( * )

     

     

    이번에 사용할 방법 또한,

    1. Scanner
    2. BufferedReader

    이전 문제와 동일한 방법으로 풀이한다.

     

     

     


    # 풀이 - Scanner

     

     

    * Scanner 

    : 값을 입력받기 위한 클래스.

     

    다시금 해당 클래스에 대해 정리하여 보면, 

    • Java.util 패키지에 포함되어 있다. (Java 프로그래밍에 유용한 클래스를 모아둔 패키지로, Date/Calendar/Collection 등이 있다.)
    • 기본형(Primitive) 데이터 타입을 모두 받을 수 있다. (boolean, char, byte, short, int, long, float, double)
    • 토큰(Token) 기준으로 데이터를 입력 받는다. (즉, 공백/개행/탭을 기준으로 데이터를 받아들인다.) 

    위와 같은 특징이 있음을 확인할 수 있다. 

     

    //데이터를 입력받기 위한 클래스
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
     
     		//선언
    		Scanner scan = new Scanner(System.in); //System.in -> Byte 단위로 값을 읽음.
    		int A = scan.nextInt(); //공백을 제외해서 읽음, int값을 받아들임.
    		int B = scan.nextInt();
            
            // 0 < A,B < 10 조건을 위해 if문을 사용할 수도 있다.
            //if((0<A && A<10) && (0<A && A<10)) {
    			System.out.println(A*B);
            //}
            
            //Scanner 사용 후 close()
    		scan.close();
    	}
    }

     

     

    또 반복하는 Scanner 매서드.  사용하고자 하는 데이터에 따라 적절히 사용하자.

    메서드 기능
    next() String
    nextLine() String, 띄어쓰기 포함.
    nextInt() int
    nextBoolean() boolean
    nextByte() byte
    nextShort() short
    nextLong() long
    nextFloat() float
    nextDouble() double

     

     

     


    # 추가 풀이 (1)  - BufferReader 

     

     

    * BufferReader

    : Scanner와 유사한 기능 / 버퍼 사용, 속도에 있어 우위

     

     

    이전 문제에서처럼, [BufferedReader].readLine 로 읽어들일 경우, 행을 모두 읽어오기에 이를 분리해주어야 한다.

    1. StringTokenizer
    2. Split()

    위의 두가지 방법으로 분리하여 사용하고자 한다.  (또 ...)

     

     

    방법1. StringTokenizer 사용하기

    + 잠깐, Scanner도 토큰 기준으로 데이터를 받는다고 하지 않았나요?

    더보기

    Scanner 클래스의 특징을 위에서 설명하면서, Token(공백(" "), 개행(\n), 탭(\t)을 기준으로 받아온다.

    이때 StringTokenizer 또한 이러한 토큰을 기준으로 분리하여 문자열을 받아온다.

     

    이러한 공통점이 있으나, 이 둘의 차이는 버퍼를 사용하냐 안하냐의 차이에 있다.

    //BufferedReader를 사용하기 위해 import 한다.
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
     
    public class Main {
    	public static void main(String[] args) throws IOException {
        
        	//선언    
    		BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); //System.in 대신, Stream, Reader, File이 입력될 수 있다.
     		
            
            // (1). String 생성 후 작업하기
            String text = read.readLine();
            
            //StringTokenizer - 문자열을 구분자로 쪼개어 저장한다. (토큰(Token) 형태로 저장)
            StringTokenizer str = new StringTokenizer(text," ");
            
            // *** tip. String 선언 없이 사용 가능하다. (15, 18줄 해당)
            //StringTokenizer st = new StringTokenizer(read.readLine()," "); 
            
            //토큰은 문자(문자열) 형태로 출력되기에 int로 변환한다.
    		int a = Integer.parseInt(str.nextToken());
    		int b = Integer.parseInt(str.nextToken());
            
    		System.out.println(a*b);
    	
    	}
    }

     

     

    방법2. split() 사용하기

    //BufferedReader를 사용하기 위해 import 한다.
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
     
    public class Main {
    	public static void main(String[] args) throws IOException {
        
        	//선언    
    		BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); //System.in 대신, Stream, Reader, File이 입력될 수 있다.
            
            //split()을 사용해 한글자씩으로 쪼갬.
            String[] str = read.readLine().split(" ");
            
            //문자(문자열) 형태로 출력되기에 int로 변환한다.
    		int a = Integer.parseInt(str[0]);
    		int b = Integer.parseInt(str[1]);
            
    		System.out.println(a*b);
    	
    	}
    }

     

     

     

     

    728x90

    댓글

Designed by Tistory.