실습/백준
별 찍기 7 - 2444번 (Java 풀이)
chobyeonggyu03
2024. 7. 18. 14:54
반응형
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
예제 입력 1
5
예제 출력 1
*
***
*****
*******
*********
*******
*****
***
*
이 문제를 처음 봤을 때 가장 먼저들었던 생각은 저번에 마름모의 절반을 구현해보았었기 때문에 왼쪽부분을 구현하고
" "공백과 별의 위치를 바꿔 0번쨰부터 시작하는 것이아니라 n번쨰 부터 뒤집은 마름모를 출력해주면 될 것 같다는 생각이 들어 저번에 구현했던 코드를 기반으로 풀이를 진행보았다.
하지만 풀이 동중 윈쪽와 오른쪽으로 나눠서 구현하는건 저번에 짜두었던 반복문 구조에 맞지 않았고, 위 아래로 나누어 별의 출력개수가 홀수단위로 늘어나고 줄어드는 것을 활용해 코드를 수정하게 되었다.
package BAEKJOON_2444;
/*
날짜: 2024.07.18.목
내용: 백준 2444번 문제 (별 찍기7)
*/
import java.util.*;
public class BAEKJOON_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= n-i; j > 0; j--) {
System.out.print(" ");
}
for (int j=1; j<=(2*i-1); j++) { // 별을 홀수(2n-1)개씩 증가 -> 1,3,5,7,9,...
System.out.print("*");
}
System.out.println();
}
for (int i=n-1; i>=1; i--) { // 아랫부분 (공백은 점점증가 별은 홀수단위로 감소) + n-1부터 감소하기 시작 (최대라인 한줄임)
for (int j=1; j<=n-i; j++) {
System.out.print(" ");
}
for (int j=1; j<=(2*i-1); j++) { // 별을 홀수(2n-1)개씩 감소 -> 7,5,3,1,...
System.out.print("*");
}
System.out.println();
}
}
}
반응형