만능재주꾼

[백준 2443] 별찍기6 - JAVA (+출력형식이 잘못됐습니다 해결방법) 본문

💻 Algorithm/BOJ

[백준 2443] 별찍기6 - JAVA (+출력형식이 잘못됐습니다 해결방법)

유고랭 2021. 3. 13. 01:17

백준 2443 별찍기6

 

✔️풀이

문제 풀이 소스

마지막 별이 찍히고 줄을 바꿔야 하므로 별이 어느 위치까지 찍혀야 하느냐가 중요하다

 

‼️ 각 줄의 마지막 별을 찍고 공백을 출력하는 것은 출력형식 오류에 해당하므로 마지막 별을 출력한 후 공백 출력 없이 바로 다음 줄로 넘어가야지 출력형식 오류를 해결할 수 있다 ‼️

 

전체 출력을 2n-1이라 봤을 때 출력해야 하는 공백은 n-i라 할 수 있다.

따라서 2n-1-(n-i) = n+i-1을 반복문의 조건문에 넣어주어야 올바른 출력 결과를 낼 수 있다 

 

 ⚠️ 출력형식 오류였던 코드

import java.util.Scanner;

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

        for (int i=n;i>0;i--){
            for (int j=1;j<=2*n-1;j++){
                if (j<=n-i || j>=n+i){ 
                    System.out.print(" ");
                } else System.out.print("*");
            }
            System.out.println();
        }
    }
}

해당 코드에서 공백을 출력하는 if문 조건과 이중 for문 안쪽에 있는 반복문의 조건이 잘못되어 출력형식이 잘못되었다는 결과를 받았다.

 

 

✔️ 해결 코드

import java.util.Scanner;

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

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

위의 코드에서 for문의 조건문을 별을 출력하는 범위까지로만 지정하고 if-else문을 통해 별과 공백을 출력한 뒤 for문에서 나오면 줄바꿈을 하도록 지정했다.

Comments