Posts [Java] 백준 #2440, 2441, 2442, 2443: 별찍기 - 3, 4, 5, 6
Post
Cancel

[Java] 백준 #2440, 2441, 2442, 2443: 별찍기 - 3, 4, 5, 6

2440번: 별찍기 - 3

문제

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, …, N번째 줄에는 별 1개를 찍는 문제

예제입력

1
5

예제출력

1
2
3
4
5
*****
****
***
**
*

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.monica.baekjoon;

import java.util.Scanner;

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

    int n = sc.nextInt();
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n - i; j++) {
        System.out.print("*");
      }
      System.out.println();
    }
    sc.close();
  }
}


2441번: 별찍기 - 4

문제

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, …, N번째 줄에는 별 1개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

예제입력

1
5

예제출력

1
2
3
4
5
*****
 ****
  ***
   **
    *

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;

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

    int n = sc.nextInt();
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < i; j++) {
        System.out.print(" ");
      }
      for (int j = 0; j < n - i; j++) {
        System.out.print("*");
      }
      System.out.println();
    }
    sc.close();
  }
}

별찍기 3번에서 오른쪽 정렬 조건이 추가된 문제이다. 오른쪽 정렬을 하기 위해서 공백을 출력하도록 for loop을 하나 더 만들었다.

2442번: 별찍기 - 5

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, …, N번째 줄에는 별 2×N-1개를 찍는 문제

별은 가운데를 기준으로 대칭이어야 한다.

예제입력

1
5

예제출력

1
2
3
4
5
    *
   ***
  *****
 *******
*********

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;

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

    int n = sc.nextInt();
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n - i - 1; j++) {
        System.out.print(" ");
      }
      for (int j = 0; j < 2 * i + 1; j++) {
        System.out.print("*");
      }
      System.out.println();
    }
    sc.close();
  }
}

별찍기 4번에서 별의 갯수만 조절하면 되는 문제다. 별의 개수는 1, 3, 5, 7, 9이다. 이는 2 * (인덱스값) + 1과 같다. 따라서 위와 같이 별 코드 부분을 변경해주었다.

2443번: 별찍기 - 6

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, …, N번째 줄에는 별 2×N-1개를 찍는 문제

별은 가운데를 기준으로 대칭이어야 한다.

예제입력

1
5

예제출력

1
2
3
4
5
*********
 *******
  *****
   ***
    *

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.monica.baekjoon;

import java.util.Scanner;

public class No2443 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    // n줄
    for (int i = 0; i < n; i++) {
      // 공백
      for (int j = 0; j < i; j++) {
        System.out.print(" ");
      }
      // 별
      for (int j = 0; j < 2 * (n - i) - 1; j++) {
        System.out.print("*");
      }
      System.out.println();
    }
    sc.close();
  }
}

예제에서 5를 입력하였을 때 별의 개수는 9, 7, 5, 3, 1였다. 2*5 - 1, 2*4 - 1, 2*3 - 1, 2*2 - 1, 2*1 - 1과 같다. 즉 2 * ((입력한 값) - (인덱스)) - 1이다. 따라서 위와 같이 별 부분 코드를 바꾸어주었다.

This post is licensed under CC BY 4.0 by the author.

:book: 자바의 정석 #7.7: 인터페이스

학원 #34일차: iterator 디자인 패턴, static nested class

Loading comments from Disqus ...