이 포스팅은 자바 8버전으로 풀이가 됐습니다.
문제 출처
https://www.acmicpc.net/problem/2442
2442번: 별 찍기 - 5
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.
www.acmicpc.net
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// 2442번
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(rd.readLine());
for(int i=1;i<=N;i++) {
for(int j=N;j>i;j--) {
System.out.print(" ");
}
for(int j=1;j<i;j++) {
System.out.print("*");
}
for(int k=1;k<=i;k++) {
System.out.print("*");
}
System.out.println();
}
}
}
|
풀이
갑자기 별을 찍고 싶어서 풀이한 문제이다.
이전에 별을 찍었던 것이 생각나서 코드를 참조했다.
2022.05.08 - [Algorithm Study/백준] - [ 백준 - 2439 ] [Java] 별 찍기 - 2
[ 백준 - 2439 ] [Java] 별 찍기 - 2
이 포스팅은 자바 8버전으로 풀이가 됐습니다. 문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
okeybox.tistory.com
위 포스팅에는 공백 이후 별을 찍는 방법에 대해서 언급이 되어있다.
오늘의 코드와 위 포스팅의 코드를 합쳐서 코드를 구현했는데 효율적인 별 찍기는 아닌 것 같다.
하지만 포스팅의 별 찍기는 다음과 같은 별을 찍을 수 있다.
* | ||||
* | * | |||
* | * | * | ||
* | * | * | * | |
* | * | * | * | * |
이번 포스팅의 문제는
가운데에 별들을 찍어 반복하는 것이다.
즉, 이런 그림이 나와야 한다.
그래서 2행부터 값이 반복될 수 있도록 그냥 대칭 값을 추가로 출력을 진행했다.
그래서 위와 같은 별 찍기가 완성됐다.
첫 반복문에서 틀을 두 번째 반복문에서 없는 경우 공백의 수를 3번째 반복문에서 좌측 별을 찍어내기 4번째 반복문에서 우측 별을 찍어내기로 마무리할 수 있다.
그냥 직관적으로 문제를 풀어냈기 때문에 좋은 코드 효율을 갖고 있지 않다.
그냥 문제 해결을 위한 코드이므로 이런 코드는 참조용 코드로 갖고 가면 좋을 것 같다.
오타나 풀이에 대한 문제가 있는 경우 댓글 부탁드리겠습니다.
다음 포스팅 때 뵙겠습니다!