today_is
[ 백준 2444번 ] 별 찍기 - 7 ( java ) 본문
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
입력 예제
5
출력 예제
*
***
*****
*******
*********
*******
*****
***
*
문제 파악
// 공백 별 공백
// * 4 1 4
// *** 3 3 3
// ***** 2 5 2
// ******* 1 7 1
// ********* 0 9 0
// ******* 1 7 1
// ***** 2 5 2
// *** 3 3 3
// * 4 1 4
문제에서도 나와있듯이
별찍기는 별과 공백의 개수가 변하는 규칙성에 대해 아는 것이 중요하다
이중 for 문을 이용하여 i는 하나의 "줄"을 담당하고, j는 하나의 "칸"을 담당한다 생각하자.
한 줄(i)마다 각 칸(j)이 어떻게 출력되는지 파악해야한다.
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
int sp = (count * 2 - 1) / 2; // 이때, 별과 공백 변수의 값은
int st = 1; // 초기값으로 초기화해둔다. (== i가 0일때 출력될 별과 공백의 개수)
for(int i=0; i < count; i++ ) {
for(int j = 0; j < sp; j++) {
System.out.print(" ");
}
for(int j = 0; j < st; j++) {
System.out.print("*");
}
System.out.println(); // 내용이 끝나면, 한 줄 띄우기
sp -= 1;
st += 2;
}
sp = 1;
st = (count * 2) - 3;
for(int i=0; i < count-1; i++ ) {
for(int j = 0; j < sp; j++) {
System.out.print(" ");
}
for(int j = 0; j < st; j++) {
System.out.print("*");
}
System.out.println();
sp += 1;
st -= 2;
}
}
}
study_review

코드를 자꾸 수정하다보니까,
나중에 제출할때는 4중 for문을 만들어서 제출하는 불상사가 생겼다...
출력 형식이 잘못됐다고 뜨길래 깜짝 놀랬는데
다시 보니까 문제점을 바로 파악해서 제출할 수 있었다.
예전에는 별찍기가 너무 어려웠는데
확실히 규칙성을 파악한 이후로는 별찍기를 빠르게 풀 수 있게 되었다.
모든 문제에는 규칙성이 있고, 그것을 파악해서
어떻게 코드에 적용하느냐가 제일 어려운듯하다
그래도 같은 유형의 문제를 반복하다 보면 별찍기처럼 어느 순간에 쉽게 느껴지지 않을까 싶다
(+)
벌써 백준 문제도 50개 정도 풀었는데
코드 제출 수에 비하면 맞힌 문제 개수는 .. 너무 적다..
사실 처음에는 문제 틀리는 게 부끄러워서 틀리면 비공개로 전환할까 고민도 했었는데
나 같은 초보들이 부끄러움을 느낄 자격(?) 이 있나 싶다.
모르는 건 문제가 되지 않는다.
모르는 채로 놔두는 것이 제일 큰 문제다.
모를수록 당당하게 제출해야겠다 ㅋㅋㅋㅋㅋ
'java' 카테고리의 다른 글
[ jsp ] 로그인 세션 (0) | 2023.12.11 |
---|---|
[ 상속 ] (0) | 2023.12.10 |
[ 백준 3003번 ] 킹, 퀸, 룩, 비숍, 나이트, 폰 ( java ) (0) | 2023.12.09 |
[ jsp ] 단순한 도서 관리 (0) | 2023.12.08 |
[ jsp ] request 와 response 의 내장객체 (0) | 2023.12.07 |