[BaekJoon] 2739번 - 구구단 (java)

1. 문제

👉 문제 바로가기

- 조건

시간 제한 메모리 제한
1초 128MB


- 문제

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

- 입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

- 출력

출력형식과 같게 N*1부터 N*9까지 출력한다.

- 예제

  입력      출력  
2 2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18





2. 풀이

반복문 for를 사용해 구구단을 출력한다.

for (초기식; 조건식; 증감식) {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문 작성;
}




2가지의 입력 / 출력 방식을 사용해서 결과를 출력한다.

  • 입력
    1. Scanner 클래스
    2. BufferedReader 클래스

  • 출력
    1. System.out.println()
    2. BufferedWriter 클래스


- 1. Scanner 클래스 / System.out.println()

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int A = sc.nextInt();
        
        for(int i=1;i<=9;i++){
            System.out.println(A + " * " + i + " = " +A*i);
        }
    }
}

위와같이 객체를 생성할 때, Scanner(System.in) 에서 System.in 은 입력한 값을 Byte 단위로 읽는 것을 뜻한다.

int형 데이터를 입력받기 위해 nextInt() 메서드를 사용한다.

위의 예제 출력을 보면 문자 사이에 공백이 있다. 빠뜨리지 않도록 주의하자!



[여기서 잠깐!]

Scanner에 대해 더 자세히 알고싶다면 여기 를 클릭하세요




- 2. BufferedReader 클래스 / 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));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int A = Integer.parseInt(br.readLine());

    for (int i = 1; i <= 9; i++) {
        bw.write(A + " * " + i + " = " + A*i);
        bw.newLine();
    }

    bw.flush();
    bw.close();

  }
}

readLine()은 한 줄을 통째로 읽어 String으로 반환하기 때문에 Integer.parseInt()을 사용해 int형으로 변환시켜준다.

BufferedWriter 클래스의 write() 메서드를 사용해 버퍼에 출력값을 저장하고, flush() 메서드로 버퍼를 비우고 한번에 출력한다.
newLine() 메서드로 개행(Enter)을 한다. 또는 write() 안에서 맨 뒤에 "\n" 을 붙여도 된다.



[여기서 잠깐!]

BufferedReader/BufferedWriter 클래스에 대해 더 알아보고 싶으면 여기 를 클릭하면 된다.





3. Scanner VS BufferedReader 성능 비교

image

위에서 부터 순서대로

  1. BufferedReader + System.out.println()(표준 출력)
  2. BufferedReader + BufferedWriter
  3. Scanner + System.out.println()(표준 출력)
  4. Scanner + BufferedWriter



이 문제는 출력할 데이터가 많지 않아 출력 방식 간에는 큰 차이가 없어 보인다.
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.





관련 페이지

Categories:

Updated:

Leave a comment