Algorithm/Baekjoon(Java)

[백준/JAVA] 2438 : 별 찍기 - 1 ( 중첩for문 )

비망노트 2022. 7. 10. 13:07
문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

 

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

 

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

 

예제 입력 예제 출력
5 *
**
***
****
*****

 

⭕ 풀이

import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<n;i++){
            for(int j=0;j<=i;j++){
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 

✅ 바깥for문 안의 실행문은 j를 사용한 내부for문과 sb에 개행문자를 추가하는 실행문이 있고

내부for문의 실행문은 sb에 j가 i의 수와 작거나 같은동안 * 을 담는 실행문이있다.

즉 i를 사용한 바깥 for문은 마지막에 개행문자를 추가해주므로 총 몇줄을 출력할지 알 수 있고

j를 사용한 내부 for문을 바깥의 변수 i와 비교해서 *을 몇번  append 할것인지 알 수 있다.

 

즉 한줄마다 i가 증가하므로 j의 조건식을 j<=i로 하면 j도 한줄씩 내려갈때마다 * 을 하나씩 더 append하는것이다.

 

이렇게 for문안에 for문을 사용하는것을 중첩for문이라고하고

이경우 바깥의 변수와 안의변수를 적절히 사용하면 여러 별찍기모양을 구현할 수 있다.

 

이전에 예시와함께 작성했던 반복문(for)를 참고하면 좋을것같다.

2022.07.05 - [Java] - JAVA - 반복문 ( for )

 

 

-출처

https://www.acmicpc.net/problem/2438