ToBe끝판왕

[ 알고리즘 ] 백준 2439번 문제 - 자바( JAVA ) 본문

■ 알고리즘/백준 JAVA

[ 알고리즘 ] 백준 2439번 문제 - 자바( JAVA )

업그레이드중 2022. 5. 26. 16:21
반응형

주의사항

※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.

 


 

백준 2439번 문제

 

백준 알고리즘의 단계별 문제 풀기

3단계 < 반복문 >

 

 

 해당 문제 링

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

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 


 

코딩 하기

 

1) Scanner 사용

import java.util.Scanner;

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

 

 

2) BufferedReader 사용

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {

	public static void main( String[] args ) throws IOException {
    
    	BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
        
        int N = Integer.parseInt( br.readLine() );
        
        br.close();
        
        for( int i=1; i<=N; i++ ) {
        	for( int j=1; j<=N-i; j++ ) {
            	System.out.print( " " );
            }
            for( int k=1; k<=i; k++ ) {
            	System.out.print( "*" );
            }
            
            System.out.println( );
        }
    }
}

 

 

 

문제 해결

 

 

•  1행부터 N행까지 출력을 하기 위한 반복문을 먼저 생각한다.

for( int i=1; i<=N; i++ )

•  출력을 보면 1행에 4개 , 2행에 3개 즉, n번째 행에는 N-n 개의 공백이 출력 

   별은 n번째 행에 n개가 출력되어야 한다.

•  i = 행 이므로, N - i 값 만큼 공백을 출력해야 한다.

 

 

•  이중 for문 출력

   -  공백 출력의 경우, 내부 for문의 j 는 N-i 만큼 반복하면 된다.

for( int i=1; i<=N; i++ ) {
	for( int j=1; j<= N-i; j++ ) {
    	print( " " );
    }
}

 

 

•  별의 개수는 i의 값만큼 출력하니 이중 for문 외부에 for문을 하나 더 만든다.

•  한행의 출력이 끈나면 개행( 줄바꿈 ) 이 푤하기 떄문에 System.out.println( ); 으로 개행처리를 해준다.

 for( int i=1; i<=N; i++ ) {
        	for( int j=1; j<=N-i; j++ ) {
            	System.out.print( " " );
            }
            for( int k=1; k<=i; k++ ) {
            	System.out.print( "*" );
            }
            
            System.out.println( );
        }

 

반응형
Comments