본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 07. 입력받은 행 개수에 따라 역삼각형 모양 별 출력하기

by 제이투더문 2024. 6. 22.

 

 안녕하세요, 작가 J입니다. 오늘은 Java로 역삼각형 모양의 별을 출력하는 프로그램을 만들어 보겠습니다. 이번 예제는 반복문을 활용하여 입력받은 행 개수만큼 별을 출력하는 문제입니다.

 

 저번 삼각형 모양과는 약간 다른 문제입니다. 천천히 살펴보겠습니다.

 

[Java Festival 07] 입력받은 행 개수에 따라 역삼각형 모양 별 출력하기

행 개수를 입력 받아 다음과 같이 삼각형을 출력하시오.

 

 

 

문제 설명

 이 문제는 사용자가 입력한 행 개수에 따라 역삼각형 모양으로 별을 출력하는 문제입니다. 첫 번째 행에는 입력한 행 개수만큼 별이 출력되고, 그 다음 행부터는 한 줄씩 별의 개수가 줄어들어 마지막 행에는 별 하나만 출력됩니다.

 

코드 풀이

먼저 이 문제를 해결하기 위한 간단한 자바 코드를 보겠습니다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("행 개수: ");
        int row = sc.nextInt();
        
        for (int i = row; i > 0; i--) { // 행 개수만큼 반복
            for (int j = 0; j < i; j++) { // 각 행에 출력할 별의 개수만큼 반복
                System.out.print("*");
            }
            System.out.println(); // 한 행이 끝나면 줄바꿈
        }
        
        sc.close();
    }
}

 

 위의 코드는 i를 row 갯수 만큼 시작합니다. i가 7이면 j는 i보다 적을때까지 반복되니깐 처음부터 별 7개를 출력하게 됩니다. i가 출력할 별의 개수라고 보시면 될 것 같습니다. 7, 6, 5 ...

 

조금 헷갈리신다고 하면 아래 코드를 보셔도 될 것 같습니다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("행 개수 : ");
		int num = sc.nextInt();
		
		for (int i = 0; i < num; i++) { // 행 개수 만큼 반복 
			for (int j = num; j > i; j--) { // 각 행에 출력할 별의 개수만큼 반복
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

 

 위 코드는 i와 j를 역할을 바꾸었습니다. i는 그대로 행의 개수 만큼 반복하고 j가 7부터 시작하여 i만큼 점점 작아지는 구조입니다. 저는 아래의 코드가 저한테 좀 익숙한 것 같습니다.

 

 이렇게 두 코드 다 정답은 없으며, 이 방법외에도 여러분들이 이해하기 쉽게 코드를 짜시길 바랍니다.

 

마무리

 이 예제는 작은 숫자부터 시작해 반복문의 작동 방식을 이해하는 데 큰 도움이 됩니다. 반복문의 조건과 변수를 조절하여 원하는 패턴을 출력하는 방법을 배우면, 더 복잡한 패턴 출력 문제도 쉽게 해결할 수 있습니다.

 

 순서대로 원래의 삼각형 별찍기를 제대로 이해하지 않으셨다면, 이 문제의 풀이에 어려움을 겪을 수 있습니다. 그만큼 중첩 for문의 돌아가는 구조와 패턴을 익히셔야 됩니다.

 

오늘은 주말이라 포스팅이 조금 많네요. 그래도 열심히 달려보도록 하겠습니다.

 

여러분들도 화이팅입니다!