Algorithm
[BOJ] 백준 2445번 - 별 찍기 8
haehyun
2021. 11. 11. 14:45
728x90
문제
https://www.acmicpc.net/problem/2445
2445번: 별 찍기 - 8
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
풀이
- N : 5 => 9줄 출력
N : 6 => 11줄 출력
N : 7 => 13줄 출력
N : 8 => 15줄 출력
N : 10 => 19줄 출력 - N에 2를 곱하면 짝수가 되는데 여기서 -1을 하니까, 출력되는 줄 개수는 언제나 홀수
- N * 2 -1은 N + N + -1 과 같음
- N줄, N-1줄을 각각 for문으로 나눠서 출력한다. (서로 증감 규칙이 다르니까)

- 별 개수 - N 간의 관계를 파악한다.
for문 (1) : 별 개수 = (1 * 2) ~ (N * 2), 증가
for문 (2) : 별 개수 = (N - 1) ~ (1 * 2), 감소 - 공백 개수 - 별 개수 간의 관계를 파악한다.
공백 개수 = (N * 2) - 해당 라인의 별 개수
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
int n = sc.nextInt();
//for문 (1)
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
sb.append("*");
}
for(int j = 1; j <= (n * 2) - (i * 2); j++){
sb.append(" ");
}
for(int j = 1; j <= i; j++){
sb.append("*");
}
sb.append("\n");
}
//for문 (2)
for(int i = n -1; i >= 1; i--){
for(int j = 1; j <= i; j++){
sb.append("*");
}
for(int j = 1; j <= (n * 2) - (i * 2); j++){
sb.append(" ");
}
for(int j = 1; j <= i; j++){
sb.append("*");
}
sb.append("\n");
}
System.out.print(sb);
}
}
728x90