본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 10996번 java 별 찍기 - 21 for문

by 졸린이 2020. 9. 2.
반응형

백준 10996번 java 별 찍기 - 21 for문


위에 처럼 별이 출력되게 나오는 프로그램이다.

 

규칙을 좀 살펴볼 필요가 있는데 1입력은 신경쓸 필요없고 2와 3을 보면 n*2의 줄 수를 출력한다.

 

그리고 2는 한 줄에 하나씩 3은 2개 1개 2개 1개 이런식이다. n이 홀수면 홀수 줄 출력에는 (n+1)/2개의 별이 찍히는 것을 볼 수 있다.

 

바로 코드를 봐보자. 조오금 길다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n==1)
            System.out.println("*");
        else {
            for(int i=1; i<=n*2; i++)
            {
                if(i % 2 == 1)
                //홀수 줄 출력
                {
                    if(n % 2 == 0//n이 짝수면
                    {
                        for(int j=1; j<=n/2; j++)
                            System.out.print("* ");
                        System.out.println();
                    }
                
                    else
                    {
                        for(int j=1; j<=(n+1)/2; j++)
                            System.out.print("* ");
                        System.out.println();
                    }
                }
                else
                //짝수 줄 출력
                {
                    for(int j=1; j<=n/2; j++)
                        System.out.print(" *");
                    System.out.println();
                }
            }
        }
    }
}
cs

 

길어보이지만 사실 별로 뭐 내용은 간단하다.

line9,10 : 그냥 1이 입력되면 별 하나를 출력한다.

line12 : 1이상이 입력될 때 n*2개의 줄이 출력되므로 그만큼 for문으로 반복시킨다.

line14, 31 : 홀수 줄과 짝수 줄의 출력이 다르므로 구분해서 반복시킨다.

line17~21 : 홀수 줄은 왼쪽에 치우친 별을 출력시킨다.

또 n이 짝수냐 홀수냐도 구분시켜주는데 n이 짝수면 1/2만큼만 출력시키면 된다.

그러므로 n/2만큼 반복시키면서 별을 출력시켜주고 줄넘김을 하면 된다.

line24~29 : n이 홀수일 경우이다. n이 홀수에 홀수줄의 별출력규칙은 (n+1)/2이다. 그러므로 (n+1)/2로 반복시켜준다.

(3이면 (3+1)/2로 2개 출력시키게 한다.)

line31~37 : 짝수 줄을 출력할 때는 n이 홀수이건 짝수이건 똑같이 n/2만큼만 출력한다.

 

지금 풀고 있는 부분이 16단계 동적계획법인데 이제 겨우 5단계 포스팅하고 있으니 언제 다 작성할지.. 그것도 2단계서부터만 작성하기 시작했는데.. 그냥 코딩공부하는 것도 힘든데 공부한것들 포스팅하는건 두배로 귀찮다.

 

여러 학습자료들 꾸준하게 고퀄리티로 올려주시는 블로거님들 진심으로 존경합니다.

 

 

반응형

댓글