java
백준 2444번 문제 별 찍기 - 7(Java_자바)
먼지제거제
2024. 3. 8. 19:47
https://www.acmicpc.net/problem/2444
2444번: 별 찍기 - 7
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
별 예제는 다른 부분들도 있는데
별 문제에서 가장 어렵지 않나 싶다..
풀어보자!
int n = sc.nextInt();
예제 입력값 '5'를 담을 변수 선언해 주자!
// 위쪽 부분 출력
for (int i = 1; i <= n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
1행: 공백 4개, 별 1개
2행: 공백 3개, 별 3개
3행: 공백 2개, 별 5개
4행: 공백 1개, 별 7개
5행: 공백 0개, 별 9개
위쪽 부분부터 출력해 주자!
1. 행 부분 출력 for문 ' i부터 n까지 반복 '
2. 열 부분 중 첫 번째 for문 각 줄의 시작 위치에 공백을 출력, 공백의 개수는 ' n - i '
즉, 현재 행보다 위쪽에 위치한 공백의 개수
3. 열 부분 중 두 번째 for문 각 줄에 별을 출력, 별의 개수는 ' 2 * i - 1 '
즉, 여기서 '-1'은 첫 번째 줄부터 공백이 없는 경우를 제외
// 아래쪽 부분 출력
for (int i = n - 1; i > 0; i--) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
행 for문 ' 0부터 n - i로 i를 감소 ' 말고는
피라미드, 역피라미드 열 코드가 동일
그래서!!
피라미드는
공백의 개수가 줄어들고, 별의 개수는 증가,
역피라미드는
공백의 개수는 늘고, 별의 개수는 감소
이제 합쳐보자!
Scanner
import java.util.Scanner;
public class star_2444 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 1; i <= n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = n - 1; i > 0; i--) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
BufferedReader로 출력해 보자!
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class star_2444 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 1; i <= n; i++) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = n - 1; i > 0; i--) {
for (int j = 0; j < n - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
화이팅!