기억보다 기록을

[Beginner] 1291: 구구단 본문

Algorithm/정올

[Beginner] 1291: 구구단

juyeong 2021. 6. 3. 22:51
반응형

[문제]

원하는 구구단의 범위를 입력받아 해당 구간의 구구단을 출력하는 프로그램을 작성하시오.

 

[처리조건]

(1) 구간의 처음과 끝을 입력받는다. 

(2) 입력된 구간은 반드시 처음 입력 값이 끝의 입력 값보다 작아야 하는 것은 아니다.

    즉 입력된 구간의 범위는 증가하거나 감소하는 순서 그대로 출력되어야 한다.​ 

[출처]

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=574&sca=20

 

JUNGOL

 

www.jungol.co.kr

[입력형식]

구구단의 시작 범위 s,와 끝 범위 e를 입력받는다.(s와 e는 2부터 9사이의 정수)

하나의 결과가 출력되면 프로그램을 종료한다.

 

[해설]

1) 구구단의 시작범위를 입력받기 위해 Scanner를 사용한다. 

Scanner와 bufferedReader의 차이는 여기에 잘 정리되어있다. 

2) 2와 9사이의 범위를 벗어나는 수가 들어올 경우 에러메세지를 출력하고, 다시 입력받는다. 

3) 처음 입력받는 수를 s, 마지막에 입력받는 수를 e라고 가정하자. s가 e보다 작으면 

 

 

[코드]

package beginner;

import java.util.Scanner;

public class MultiplyTable { 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int s = sc.nextInt();
		int e = sc.nextInt();
		
		while ((s<2 || s>9) || (e<2 || e>9)) {
			System.out.println("Input Error");
			s = sc.nextInt();
			e = sc.nextInt();	
		}	
		
		  if (s < e) {
	            for (int i = 1; i <= 9; i++) {
	                for (int j = s; j <= e; j++) {
	                    System.out.printf("%d * %d = %2d   ", j, i, (j*i));
	                }
	                System.out.println();
	            }
	        } else {
	            for (int i = 1; i <= 9; i++) {
	                for (int j = s; j >= e; j--) {
	                    System.out.printf("%d * %d = %2d   ", j, i, (j*i));
	                }
	                System.out.println();
	            }
	        }
	    }
	}
반응형