(백준) 자바 - 2442번 별찍기 5
업데이트:
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, …, N번째 줄에는 별 2×N-1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
*
***
*****
*******
*********
내 코드
package com.baekjoon;
import java.util.Scanner;
public class backjoon2442 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int star = scanner.nextInt();
for(int i = 1; i <= star; i++) {
// 공백찍기
for(int j = i; j < star; j++) {
System.out.print(" ");
}
// 별찍기
for(int k = 0; k < i*2-1; k++) {
System.out.print("*");
}
//줄바꿈
System.out.println();
}
scanner.close();
}
}
풀이
- 원래 숫자의 시작을 0부터 하는 것을 좋아하지만 i를 1로 설정한 이유는, i를 0부터 시작하면 별찍기 for문에서 첫 i*2가 음수가 나오기때문이다. 그래서 1부터 시작하는 것으로 한다.
- 공백찍는 for문은 j=i로 설정해주면 간단하다.
- 문제에서 가운데를 기준으로 대칭이여야 한다는 말에 헷갈리지 말고, 오로지 찍힌 별의 갯수만 세어보자. 1,3,5,7,9… 즉 홀수만 나오고 있다. 홀수는 어떤수든 곱하기 2해서 1을 빼면 된다.
최종적으로 공식은
i*2-1
이된다. - 공백과 별찍기가 다 끝났다면 줄바꿈한다.
댓글남기기