Algorithm/정올 알고리즘

정올_1291 구구단(자바) / 도형만들기1

미스터로즈 2021. 6. 8. 23:12

시간&메모리 제한

문제

입력 & 출력

문제풀이

package com.jungol;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//구구단
public class jungol_1291 {

	public static void main(String[] args) throws IOException {
		StringBuilder sb = new StringBuilder();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int input1=Integer.parseInt(st.nextToken());
		int input2=Integer.parseInt(st.nextToken());
		
		while(input1<2 || input1 >9 || input2 <2 || input2>9) {
			System.out.println("INPUT ERROR!");
			st = new StringTokenizer(br.readLine());
			input1=Integer.parseInt(st.nextToken());
			input2=Integer.parseInt(st.nextToken());
		}
		
		//앞의 숫자가 더 큰 경우
		if(input1>input2) {
			for (int i = 1; i <= 9; i++) {
				for (int j = input1; j >= input2; j--) {
					if(i*j<10) {
						sb.append(j+" * "+i+" =  "+i*j+"   ");
					}else {
						sb.append(j+" * "+i+" = "+i*j+"   ");
					}
				}
				sb.append("\n");
			}
		}else {
			for (int i = 1; i <= 9; i++) {
				for (int j = input1; j <= input2; j++) {
					if(i*j<10) {
						sb.append(j+" * "+i+" =  "+i*j+"   ");
					}else {
						sb.append(j+" * "+i+" = "+i*j+"   ");
					}
				}
				sb.append("\n");
			}
		}
		System.out.println(sb);
	}
}

- 구구단을 출력하는 문제였습니다.

 

- 일반적인 구구단에 비해서 요구하는 조건들이 많았습니다.

 

-특히 입력하는 부분에서 잘못 입력을 하면 다시해야 합니다. 하지만

br = new BufferedReader(new InputStreamReader(System.in)); 을 넣고 돌렸는데 NullPoint 예외가 발생했습니다. 원인은 아직 찾고 있습니다.

 

- if에 대한 조건문을 숫자가 크고 작음에 따라서 그리고 배치에 따라서 10보다 작으면 2칸을 뛰어 줘야 한다는 점에서 특이점이 있었습니다.