[JAVA]백준 알고리즘/단계별 - 반복문
[JAVA]백준 알고리즘 2439번 : 별 찍기 - 2
코린이J
2023. 1. 4. 04:16
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