반응형
이번에는 2개의 문제를 합쳐서 피라미드를 만들어 보자.
1, 3, 5, 7
1부터 2씩 증가하여 별을 가운데 정렬하는 구조이다.
*
***
*****
*******
*********
문제 핵심
- 1 <= N <= 100
- 2 * N - 1 개의 별을 찍어낸다고 한다.
- 가운데 정렬로 별을 1부터 2씩 증가하여 출력하여 피라미드를 만들어 내는 구조
풀이 과정
별 찍기 1과 같이 이차원 배열을 통해 그려나가는 방식이 있고, 공백의 개수와 별의 개수의 규칙을 찾아 그려나갈 수 있다.
다음 풀이는 규칙을 찾아 문제를 풀어나가는 경우이다.
1. N이 5일 때 공백의 개수는 N - 1, N - 2, ..., 0개이다.
2. 이 때 별의 개수는 1부터 시작하여 2개씩 더해진다. 즉 홀수로 진행된다.
3. 각각의 층은 N, N + 1, N + 2, ..., N * 2 - 1로 증가된다.
4. 1부터 N + i까지 항상 반복하면 i값에 따라 3번의 조건을 만족하고 j < N - i값에 따라 공백은 점차 줄어들게 된다.
5. 나머지를 별로 채움으로써 피라미드처럼 나오게 된다.
for (int i = 0; i < N; i++) {
for (int j = 1; j <= N + i; j++) {
if(j < N - i) {
stringBuilder.append(' ');
}
else {
stringBuilder.append('*');
}
}
stringBuilder.append('\n');
}
벌써부터 별 찍기가 재밌어 진다.
아직까지는 조금만 생각하면 금방 풀 수 있는 문제이다.
개인적으로 단계적 풀이를 제외하고 모든 별찍기를 풀고자 한다.
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 stringBuilder = new StringBuilder();
for (int i = 0; i < N; i++) {
for (int j = 1; j <= N + i; j++) {
if(j < N - i) {
stringBuilder.append(' ');
}
else {
stringBuilder.append('*');
}
}
stringBuilder.append('\n');
}
System.out.println(stringBuilder);
}
}
반응형
'백준 단계별 풀이' 카테고리의 다른 글
[ 백준 2443번 문제 ] 별 찍기 - 6 - JAVA (1) | 2025.06.17 |
---|---|
[ 백준 2441번 문제 ] 별 찍기 - 4 - JAVA (2) | 2025.06.13 |
[ 백준 2440번 문제 ] 별 찍기 - 3 - JAVA (1) | 2025.06.12 |
[ 백준 2439번 문제 ] 별 찍기 - 2 - JAVA (2) | 2025.06.11 |
[ 백준 2438번 문제 ] 별 찍기 - 1 - JAVA (1) | 2025.06.10 |