백준 2439 - java ) 별찍기-2

2021. 8. 24. 16:23코딩/Python

내 사고과정 

맨날 왼쪽정렬만 보다가 오른쪽 정렬을 보니 어떻게 해야 하지..? 일단 생각해보기로 했다. 

**

*** 

****

***** 의 경우는 

별 1 > 2 > 3 > 4 > 5 

공백 4 > 3 > 2 > 1 > 0

줄바꿈 1 > 1 > 1 > 1 > 1 

 

    *

   **

  ***

 ****

***** 의 경우는 

별 1>2>3>4>5 

공백 4>3>2>1>0

줄바꿈 1 > 1 > 1 > 1 > 1 (둘이 비슷하군) 

 

별찍기1 코드에서는 *을 먼저 for문으로 출력했다면, 이번 별찍기2에서는 공백을 먼저 출력해야 할 것 같다고 생각했다. 

 

내 실행코드 

import java.util.Scanner; 

public class Test {
	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<=i;j++) {
				System.out.print(""); 
			}
			System.out.println("*"); 
		}
		
		System.out.println("\n");
	
	   }
}

내 실행결과

5
*
*
*
*
*

다른 분들과의 코드를 비교해보니 접근 방법은 맞았으나 조금 틀린 부분이 있었다.

 

 

실행 코드 

import java.util.Scanner; 

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

	    for(int i=1; i<=n; i++){ // 1~N행까지 출력 
	      for(int j=1; j<=n-i; j++){ // 공백 출력 
	        System.out.print(" ");
	      }
	      for(int k=0; k<i; k++){ // for문 변수 k를 이용하여 * 출력 
	        System.out.printf("*");
	        
	      }
	      System.out.println();
	    }
	  }
	}

실행 결과 

5
    *
   **
  ***
 ****
*****

 

 

 

 

 

 

 


IF) * 을 출력하는 for문이 삼중 for문으로 들어간다면 어떤 결과가 생길까? 

import java.util.Scanner; 

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

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

실행 결과 

5
 *
 *
 *
 *
 **
 **
 **
 ***
 ***
 ****

'코딩 > Python' 카테고리의 다른 글

백준 10952 - java ) A+B-5  (0) 2021.08.24
백준 10871 - java ) X보다 작은 수  (0) 2021.08.24
백준 2438 - java ) 별 찍기-1  (0) 2021.08.24
백준 11022 - java ) A+B-8  (0) 2021.08.24
백준 11021 - java ) A+B-7  (0) 2021.08.24