알고리즘/백준

[java] 백준 2440번, 2441번 별 찍기 - 3~4

펄찌 2021. 7. 26. 12:01

2440번 별 찍기 - 3

간단하게 이중 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=0; j<i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

N에 5를 입력받게 되면 첫 번째 for문에 i는 5의 값이 들어가게 되고

두 번째 for문인 j는 0부터 4까지 총 5번의 별을 찍게 된다.

 

첫 번째 반복문에서 i--이기 때문에 반복문이 1회 끝날 때마다 i=4,3,2,1이 되면서 별을 j의 반복 횟수만큼 찍게 되는 것이다.

 

2441번 별 찍기 - 4

이 문제도 마찬가지로 이중 for문을 돌리면 된다.

단지 추가된 것은 N번째 줄까지 차례대로 별을 출력하면서 별이 없어진 개수만큼 공백이 추가된다는 점.

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 k=N-i; k>0; k--){
                System.out.print(" ");
            }
            for(int j=0; j<i; j++){
                System.out.print("*");
            }
            System.out.println();
        }


    }

}

간단하게 두번째 반복문이 2개인데 하나는 k의 반복문, 다른 하나는 j의 반복문이라고 칭하겠다.

N에 5를 입력 받았을 때 k의 반복문에서 K의 값은 5-5인 0이 된다. 그런데 조건에서 k>0이라고 하였으니 반복문을 탈출하고 j의 반복문으로 넘어가서 별 개수를 5개만큼 찍게 된다.

 

첫 번째 반복문을 다시 돌게 되면 N=4가 되고 k의 반복문에서 k는 1이 된다. 그러면 공백을 한번 찍게 되고 j의 반복문에서는 i가 4이기 때문에 별을 4번찍게 된다.

 

그러면 문제의 출력 값 처럼 별이 찍히게 된다.

 

.

.

.

 

여담) 필자는 대학생 1학년 때 저 문제를 교수님께 받아서 못 풀었다는... (한심 그 자체...) 

이런 식으로 짜서 교수님께 가져다 드렸더니... 교수님이 웃으시면서... 

printf("*****\n");
printf("****\n");
printf("***\n");
printf("**\n");
printf("*\n");

"자네는 참... (침묵)"

하하... C언어 과목 C를 받았다는 ... 포인터와 구조체 보면서 핳핳 RUN... 했던 기억이 있다...

반응형