728x90

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

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

문제

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

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

<예제 출력>

    *
   **
  ***
 ****
*****

 

풀이

백준 알고리즘 2438번 : 별 찍기 - 1 문제와 유사한 문제이다.

다른 점은, * 앞에 공백을 출력하여 오른쪽 정렬을 해야 한다는 것이다.

이 조건은 N을 입력받았을 때 공백과 *의 개수를 더하면 항상 N이 된다는 것을 이용하여 만족시킬 수 있다.

 

이 문제도 이중반복문을 사용한 방법, String 클래스의 repeat 메서드를 사용한 방법으로 해결해 보았다.

BufferedReader 클래스 StringBuilder 클래스를 사용하였다.

 

코드

이중반복문을 사용한 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());

        for(int i = 1; i <= N; i++) {
            for(int k = N; k > i + 1; k--) {
                sb.append(" ");
            }
            for(int j = 0; j < i; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
}

String 클래스의 repeat 메서드를 사용한 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());

        for(int i = 1; i <= N; i++) {
            String space = " ";
            String star = "*";
            sb.append(space.repeat(N - i)).append(star.repeat(i)).append("\n");
        }
        System.out.println(sb);
    }
}

 

틀린 부분이 있다면 정정해주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!

728x90

+ Recent posts