예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
5
*
***
*****
*******
*********
*******
*****
***
*
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 input = Integer.parseInt(br.readLine());
for(int i=1; i<2*input; i++) {
if(i<=input) {
for(int j=1; j<2*input; j++) {
if(j==input) {
System.out.print("*");
} else if (j<input){
if(input-i+1>j) {
System.out.print(" ");
} else {
System.out.print("*");
}
} else {
if(input-i+1>(2*input)-j) {
} else {
System.out.print("*");
}
}
}
} else {
for(int j=1; j<2*input; j++) {
if(j==input) {
System.out.print("*");
} else if(j<input){
if(i-input > j-1) {
System.out.print(" ");
} else {
System.out.print("*");
}
} else {
if(i-input > 2*input-1-j) {
} else {
System.out.print("*");
}
}
}
}
System.out.println();
}
}
}
이 코드에서 놓치기 쉬운건 예제 출력에서 별의 뒷부분이 존재하지 않는다. (별의 뒷부분에 " "을 넣지 않는다는 것이다.) 이 경우 제출 형식 오류가 뜨니 주의할 것.
백준에 시도했으나 틀린 문제가 있길래 해결하고자 풀어본 문제.
코딩을 시작할 때부터 별 찍기는 참 안 익숙해지고, 규칙도 잘 안 떠오르는 편이다.
이번에는 절대 구글링을 하지 않고 스스로의 노력으로 풀어야지 다짐해서 혼자 해결해봤다. (그렇기 때문에 코드가 안 깔끔할 수 있고, 이거보다 좋은 알고리즘 있을 수 있음)
최근 풀어본 백준 중에 조금 어려운 편이었다. 그래봤자 30분밖에 안 걸렸던 문제지만..
다음 문제도 구글링하지 않고 스스로 풀어보면 언젠가 답을 찾겠지...!