[백준,BOJ 2439] 별 찍기 - 2(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 2439] 별 찍기 - 2(JAVA 구현)

반응형

-해법

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner in =new Scanner(System.in);
        
        int n = in.nextInt();
        
        for(int i=1;i<=n;i++) {
        	for(int j=1;j<=n-i;j++) {
        		System.out.print(" ");
        	}
        	for(int j=n;j>n-i;j--) {
        		System.out.print("*");
        	}
        	System.out.println();
        }
        
        in.close();
    }
}

 

  별 찍기 -1의 오른쪽 정렬 버전이다. 마찬가지로 행은 1~5까지 증가하며 열은 5부터 45, 345, 2345, 12345 순서로 *이 붙는다. 2중 for문에서 별을 찍지 않을 반복문과 찍을 반복문을 두고 생각하면 된다.

 

  1. 별을 찍지 않는 for문

  - 1행에 1,2,3,4열/ 2행에 1,2,3열/ 3행에 1,2열/ 4행에 1열 순으로 별이 찍히지 않는다. (=> for문의 종료조건이 감소)

  - 행별로 구분되므로 행으로 사용되는 변수인 i를 활용해 조건을 설정. (j<=n-i)

 

  2. 별을 찍는 for문

  - 1행에 5열/ 2행에 4,5열/ 3행에 3,4,5열/ 4행에 2,3,4,5열/ 5행에 1,2,3,4,5, 열 순으로 별이 찍힌다. (=> for문의 종료 조건이 증가, 조건에 해당하는 열이 증가한다는 의미)

  - 마찬가지로 행별로 구분되므로 i를 활용해 조건을 설정 (j> n-i) 

 


  이전엔 2중 for문에서 하나의 for문만을 안쪽에 두고 조건문을 통해 구분하여 별을 찍어봤기 때문에 이번엔 2개의 for문을 안쪽에 두어 풀어보았다. 솔직히 조건문을 이용하는 게 더 편하고 코드도 간결하다...

 

  이러한 문제는 2중 for문에 사용하는 변수를 어떻게 활용하여 조건을 세우는지가 중요하다고 생각하며, 그렇기에 사람들마다 풀이법이 다양하게 나타난다고 생각한다. 그냥 찍히기만 하면 된다.

반응형