본문 바로가기
Algorithm/Do it 자료구조와 함께 배우는 알고리즘 입문

[Algorithm] Chapter01 연습문제 Q12 ~ Q17

by 준그래머 2021. 3. 30.
반응형

Q12 오른쪽과 같이 위쪽과 왼쪽에 곱하는 수가 있는 곱셈표를 출력하는 프로그램을 작성하시오.

(구분선은 수직선 기호(|), 마이너스기호(-), 플러스 기호(+)를 사용하세요.)

public class chap_01_q12_gugudan_chart {

    private static final int [] gugudan = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    public static void main(String[] args) {

        System.out.print("\t| ");
        for (int k : gugudan) {
            System.out.printf("%2d ", k);
        }
        System.out.println("\n----+---------------------------");
        for (int k : gugudan) {
            boolean first = true;
            for (int j = 0; j <= gugudan.length; j++) {
                if (first) {
                    first = false;
                    System.out.printf("%2d\t| ", k);
                } else {
                    System.out.printf("%2d ", gugudan[j - 1] * k);
                }
            }
            System.out.println();
        }
    }
}

 

 

Q13 곱셈이 아니라 덧셈을 출력하는 프로그램을 작성하세요.

(Q12와 같이 표의 위쪽과 왼쪽에 더하는 수를 출력하세요.)

public class chap_01_q13_plus_chart {

    private static final int [] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};

    public static void main(String[] args) {

        System.out.print("\t| ");
        for (int k : arr) {
            System.out.printf("%2d ", k);
        }
        System.out.println("\n----+---------------------------");
        for (int k : arr) {
            boolean first = true;
            for (int j = 0; j <= arr.length; j++) {
                if (first) {
                    first = false;
                    System.out.printf("%2d\t| ", k);
                } else {
                    System.out.printf("%2d ", (arr[j - 1] + k));
                }
            }
            System.out.println();
        }
    }
}

 

 

Q14 오른쪽과 가이 입력한 수를 한 변으로 하는 정사각형을 * 기호로 출력하는 프로그램을 작성하세요.

import java.util.Scanner;

public class chap_01_q14_square {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("사각형을 출력합니다.\n단 수: ");
        int line = scanner.nextInt();
        for(int i = 0; i < line; i++){
            for(int j = 0; j < line; j++){
                System.out.print("*");
            }
            System.out.println();
        }
        scanner.close();
    }
}

 

 

Q15 직각 이등변 삼각형을 출력하는 부분을 아래와 같은 형식의 메서드로 작성하세요. 또 왼쪽 위, 오른쪽 위, 오른쪽 아래가 직각인 이등변 삼각형을 출력하는 메서드를 작성하세요.

static void triangleLB(int n)

static void triangleLU(int n)

static void triangleRU(int n)

static void triangleRB(int n)

 

왼쪽 아래 triangleLB(int n)

private static void triangleLB(int n) {
    for(int i = 0; i < n; i++){
        for(int j = 0; j <= i; j++){
            System.out.print(" * ");
        }
        System.out.println();
    }
}

 

왼쪽 위 triangleLU(int n)

private static void triangleLU(int n) {
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n - i; j++){
            System.out.print(" * ");
        }
        System.out.println();
    }
}

 

오른쪽 위 triangleRU(int n)

private static void triangleRU(int n) {
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(j < i) {
                System.out.print("   ");
            }
            else {
                System.out.print(" * ");
            }
        }
        System.out.println();
    }
}

 

 

오른쪽 아래 triangleRB(int n)

private static void triangleRB(int n) {
    for(int i = n; i > 0; i--){
        for(int j = 1; j <= n; j++){
            if(i <= j) {
                System.out.print(" * ");
            }
            else {
                System.out.print("   ");
            }
        }
        System.out.println();
    }
}

 

 

Q16 n단의 피라미드를 출력하는 메서드를 작성하세요(오른쪽은 4단의 예).

static void spria(int n)

private static void spira(int n) {
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n + i; j++){
            if(j < n - i - 1)
                System.out.print(" ");
            else
                System.out.print("*");
        }
        System.out.println();
    }
}

 

 

Q17 오른쪽과 같이 아래를 향한 n단의 숫자 피라미드를 출력하는 메서드를 작성하세요.

static void npira(int n)

private static void npira(int n) {
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n + i; j++){
            if(j < n - i - 1)
                System.out.print(" ");
            else
                System.out.print((i+1) % 10);
        }
        System.out.println();
    }
}

 

 

답안의 답과 꽤나 다른 풀이 방식들이 있어서 답으로 제공하고 있는 코드는 첨부파일로 올리겠다.

chap01 q12~q17.zip
0.00MB

 

반응형