자바/코드트리

[코드트리] 구구단을 출력하는 함수 - 자바(Java)

Jakorithm 2024. 2. 15. 00:24
728x90

문제

https://www.codetree.ai/training-field/search/problems/function-that-outputs-multiplication-tables?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

9 이하의 서로 다른 정수 3개가 주어지면, 주어진 정수 중 가장 작은 수부터 가장 큰 수까지 구구단을 출력하되, 중간값인 정수로 시작하는 구구단은 빼고 출력하는 프로그램을 함수를 이용하여 작성해 보세요.

 

 

코드

첫 번째 줄에 서로 다른 정수 a, b, c가 공백으로 구분되어 주어진다.

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));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());

        int max = max(a, b, c);
        int min = min(a, b, c);
        int mid = mid(a, b, c);

        printGugudan(max, min, mid);
    }

    // 최솟값부터 최댓값까지 구구단 구하기
    private static void printGugudan(int max, int min, int mid) {
        StringBuilder sb = new StringBuilder();

        for (int i = min; i <= max; i++) {
            if (i == mid) { // 중간값 건너뛰기
                continue;
            }

            for (int j = 1; j <= 9; j++) {
                sb.append(i).append(" * ").append(j).append(" = ").append(i * j).append("\n");
            }
        }

        System.out.println(sb);
    }

    // 최댓값 구하기
    private static int max(int a, int b, int c) {
        if (a > b && a > c) {
            return a;
        } else if (b > a && b > c) {
            return b;
        } else {
            return c;
        }
    }

    // 최솟값 구하기
    private static int min(int a, int b, int c) {
        if (a < b && a < c) {
            return a;
        } else if (b < a && b < c) {
            return b;
        } else {
            return c;
        }
    }

    // 중간 값 구하기
    private static int mid(int a, int b, int c) {
        if ((a > b && a < c) || (a > c && a < b)) {
            return a;
        } else if ((b > a && b < c) || (b > c && b < a)) {
            return b;
        } else {
            return c;
        }
    }
}

 

728x90