본문 바로가기
Baekjoon 자바 코드/심화1

[백준] 2444번 별 찍기 - 7 풀이 코드 (Java 자바)

by 망댕이 2024. 4. 23.
반응형

접근 방법)

이 문제를 보고 이중 for문을 이용하여 별을 출력해야하는 것을 인지해야한다.

그리고 절반까지는 별이 점차 많아지고, 절반 이후부터 점차 줄어들기 때문에 이중 for문을 2개 만들어야한다는 생각부터 코드를 시작할 수 있다.

 


 

정답 코드 1)

 

import java.util.*;

class Main {
    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 a = 1; a <= n-i; a++){
                System.out.print(" ");
            }
            for(int b = 1; b <= (2*i)-1; b++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
        for(int k = 1; k <= n-1; k++){
            for(int a = 1; a <= k; a++){
                System.out.print(" ");
            }
            for(int b = 1; b <= 2*(n-k)-1; b++){
                System.out.print("*");
            }
            System.out.print("\n");
        }
    }
}

 

이렇게 출력 횟수 for문 안에서 띄어쓰기와 * 횟수를 출력할 for문을 또 만들어야한다.

점차 많아지는 for문 한 개 점차 줄어드는 for문 한 개로 총 2개 이중 for문을 작성하여 문제를 풀었다.

 


 

그리고 TMI이지만 처음에 띄어쓰기 출력 후, * 출력후, 다시 띄어쓰기가 출력되어있는 문제인줄 알고

아래와 같이 for문안에 for문을 3개씩 구현해놓았었다.

import java.util.*;

class Main {
    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 a = 1; a <= n-i; a++){
                System.out.print(" ");
            }
            for(int b = 1; b <= (2*i)-1; b++){
                System.out.print("*");
            }
            for(int c = 1; c <= n-i; c++){
                System.out.print(" ");
            }
            System.out.print("\n");
        }
        for(int k = 1; k <= n-1; k++){
            for(int a = 1; a <= k; a++){
                System.out.print(" ");
            }
            for(int b = 1; b <= 2*(n-k)-1; b++){
                System.out.print("*");
            }
            for(int c = 1; c <= k; c++){
                System.out.print(" ");
            }
            System.out.print("\n");
        }
    }
}

 

그리고 제출 후 처음보는 '출력 형식이 잘못되었습니다.' 라는 메세지를 보고 당황을 많이 하였다.

 

위 처럼 뜨는 이유가 출력값은 일치하지만 불필요한 공백과 같은 것이 들어가 있기에 오류가 발생하는 것이였다.

아래 사진 처럼 출력값은 똑같아 보이지만 불필요한 공백에 의해 정답처리가 되지 않았다.

오류 발생 출력값
정상적인 출력값

반응형