ezhoon

[백준] 2439_별 찍기2_Java 본문

[Java] 백준 문제풀이/for문

[백준] 2439_별 찍기2_Java

ezhoon 2022. 1. 5. 21:41

백준 2439

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

⚠️주의사항

  • 다중 for문 사용
  • 빈칸은 공백으로 할 것

이번엔 별 찍기-1 에 비해서는 어려운 문제이긴하다. 처음 보는 사람이라면 어떻게 구현해야 할지 고민하게 될 것이다.

바로 문제풀이로 가서 설명해보겠습니다.

 


문제풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class for_2439 {
    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 = 1; i <= N; i++) {
            for (int j = 1; j <= N - i; j++) { // N이 5라고 쳤을 때 빈칸은 공백으로 남아야하므로 1 ~ N-i 사이 칸들은 공백으로 해준다.
                sb.append(" ");
            }
            for (int j = 1; j <= i; j++) { // 공백 이후에 별이 찍힌다.
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
}

N을 5로 입력했을 때 

위와 같이 첫줄에는 4개의 공백이 생겨야 하고 그다음은 3개, 2개, 1개 가 생겨야 한다. 

이런 내용의 for문을 이용할 때는 변하는 숫자들이 어떤 것들이 있나 생각해보면 쉽게 나온다.

 

N(별 최대 수) i(별 세로 길이) j(별 가로 길이) 라고 했을 때 우리는 j에서 공백이 4개 3개 ~ 1개 이런 식으로 나와야 하는 것이다.

여기서 4개의 공백일 때 N과 i의 값을 보면 N = 5, i = 1이다. 3개의 공백일때는  N = 5, i = 2 이런식으로 반복 된다.

 

즉 j를 N-i 까지 반복 시키면 되는 것이다.

'[Java] 백준 문제풀이 > for문' 카테고리의 다른 글

[백준] 10871_X보다 작은 수_Java  (0) 2022.01.05
[백준] 2438_별 찍기-1_Java  (0) 2022.01.05
[백준] 11021_A+B-7_Java  (0) 2022.01.05
[백준] 2742_기찍N_Java  (0) 2022.01.05
[백준] 2471_N찍기_Java  (0) 2022.01.04
Comments