오늘도 방구석에서

백준 알고리즘 2439 별찍기2 java 본문

공부를/알고리즘

백준 알고리즘 2439 별찍기2 java

개발자를 꿈꾸는 유자c 2019. 1. 8. 13:31

https://www.acmicpc.net/problem/2439




문제

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

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

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.


예제 출력 1 

    *
   **
  ***
 ****
*****


내 생각엔... 

먼저 좌표로 바꿔보기

___ ___ ___ ___ [1,5]                        

___ ___ ___ [2,4] [2,5]

___ ___ [3,3] [3,4] [3,5]

___ [4,2] [4,3] [4,4] [4,5]

[5,1] [5,2] [5,3] [5,4] [5,5]



먼저 변수 3개가 필요함

int i - 행바꿈을 위한 변수

int j -  ___ (공백)을 표시할 변수

int k - *을 찍을 변수


예를 들어 5를 입력했을 때 

좌표 [i,  j]에서 i + j <= 5 까지  공백임을 확인

j를 기준으로 j <= 5 - i 로 표시


" * " 을 찍는 경우 

첫번째 줄에선 1개

두번째 줄에선 2개

...

5번째 줄에선 5개    ->   k = 행의 수 = i


먼저 j로 공백을 찍고 이어서 k 로 *을 찍는 구조 


코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
 
public class boj_2439 {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        int num = sc.nextInt();
 
        for (int i = 1; i <= num; i++) {
            
            for (int j = 1; j <= num-i; j++) {
                System.out.print(" ");
            }
            
            for (int k = 1; k <= i; k++) {
                System.out.print("*");
            }            
            System.out.println();
        }        
        sc.close();
    }
}
cs