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

백준 2446번 java별 찍기 - 9 for()문이 여섯개!!

by 졸린이 2020. 8. 30.
반응형

백준 2446번 java 별 찍기 - 9 for()문이 여섯개!!

baekjoon_2446
baekjoon_2446

별 찍는 프로그램이다.

 

입력값이 5면 모래시계 모양처럼 5줄을 1이 될때까지 홀수로 수를 줄여가면서 출력하고

 

1을 출력한 뒤에는 다시 개수를 늘려가면서 대칭이 되게 출력을 한다.

 

별수가 줄어들때마다 모양을 맞추기 위해 공백도 출력해준다.

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
import java.util.Scanner;
 
//baekjoon_2446
/*
*/
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int cnt=0;
        
        //윗 행
        for(int i=0; i<n; i++) {
            for(int j=0; j<i; j++)
                System.out.print(" ");
            for(int j=i*2; j<(2*n)-1; j++)
                System.out.print("*");
            System.out.println();
        }
        for(int i=0; i<n-1; i++) {
            for(int j=i+1; j<n-1; j++)
                System.out.print(" ");
            for(int j=1; j<4+cnt; j++)
                System.out.print("*");
            System.out.println();
           cnt += 2;
        }
    }
}
cs

for문이 참 많이 들어간다.

별도 찍어야 하고 공백도 출력해야 해서 좀 귀찮긴 하다.

 

line 14 : 14행부터 20행 까지 윗줄 그러니까 1까지 줄어드는 별을 찍는 for문이다.

입력값에 따라 출력하는데 5를 입력하면 9-7-5-3-1 이렇게 찍어야 한다. 때문에 14행 for문은 n번 반복하게 돌린다.

line15 : 공백을 출력하는 for문이다. 처음에는 출력을 안하고 그 다음에는 한 칸 그 후에는 두 칸 이렇게 출력을

해야한다.

공백은 별을 하나 찍을때까지 증가하므로 j는 0부터 i까지 공백을 출력한다. i가 0일때는 출력X i가 1일 때는 1회 출력.

line 17 : 규칙을 찾아서 설정해줘야 한다. 조금 복잡한데 모래시계 윗 모양을 출력할 때는 별이 줄어들면서 출력

해야한다.

별이 두개씩 줄어들므로 초깃값을 i*2로 정해 찍는 횟수를 줄어들게 한다.

맨 윗줄은 입력값이 5면 찍는 별은 9개 이므로 2*n-1이 최대값이다. 이 for문이 끝나면 줄넘김을 한다.

line 21 : 위에 for문에서 별 하나까지 찍었으므로 그 다음 부터 출력한다. n-1번 반복한다.

line 22 : 공백 출력이다. 마찬가지로 처음부터 한 칸씩 띄고 n-1번까지 반복한다.

line 24 : 이 for문이 맨 처음 돌 때는 3부터 출력하고 그 다음줄에는 2개를 추가하면 된다.

1부터 4+cnt(0)으로 3개 별을 찍고 for문이 끝나면 줄넘김을 하고 cnt에 2를 더해서 범위를 늘려준다.

 

이러면 끝!!

이게 코딩하는것보다 설명을 작성하는게 더 어려운거 같다.

 

반응형

댓글