별 찍기 - 7
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 | 128 MB | 28768 | 20208 | 18246 | 71.854% |
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
예제 입력 1 복사
5
예제 출력 1 복사
*
***
*****
*******
*********
*******
*****
***
*
결과를 저장하려고 해서 고생했고
뒷부분까지 공백을 주려고해서 고생했다.
1. Arrays.fill을 이용.
public static void main(String[] args) throws IOException {
int input = Integer.parseInt(br.readLine());
char[][] result = new char[input*2-1][input*2-1];
for (int i = 0; i < input*2-1; i++) {
Arrays.fill(result[i],'*');
}
for(int i=1;i<input;i++)
{
Arrays.fill(result[i-1],0,input-i,' ');
Arrays.fill(result[i-1],input-1+i ,input*2-1 ,'1'); // 뒤에도 공백을 넣어줘서 별을 다른 문자로 치환하려고 했던부분,정답출력은 뒷부분 공백을 출력안해서, 1로 바꿔서 1은 출력안되게끔했다.
}
for (int i = input; i < input * 2 - 1; i++) {
Arrays.fill(result[i],0,i-input+1,' ');
Arrays.fill(result[i],(input*2-1)-(i-input)-1 ,input*2-1 ,'1'); // 뒤에도 공백을 넣어줘서 별을 다른 문자로 치환하려고 했던부분,정답출력은 뒷부분 공백을 출력안해서, 1로 바꿔서 1은 출력안되게끔했다.
}
for(int i=0;i<input * 2 - 1;i++)
{
for(int j=0;j<input * 2 - 1;j++)
{
if(result[i][j] != '1') // null값이 아니라면
{
bw.write(result[i][j]+"");
}
}
if(i != input*2 -2 )
{
bw.newLine();
}
}
bw.flush();
bw.close();
}
2. 참고 , StringBuilder 이용
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n-i; j++) {
sb.append(" ");
}
for (int j = 1; j <= 2*i-1; j++) {
sb.append("*");
}
sb.append("\n");
}
for (int i = n-1; i >= 1; i--) {
for (int j = 1; j <= n-i; j++) {
sb.append(" ");
}
for (int j = 1; j <= 2*i-1; j++) {
sb.append("*");
}
sb.append("\n");
}
System.out.print(sb);
}
}
3. 참고 , 바로 출력
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int N = sc.nextInt();
for(int i = 1; i <= N ; i++) {
for(int j = 0; j < N-i; j++)
System.out.print(" ");
for(int j = 0; j < i*2-1; j++)
System.out.print("*");
System.out.println();
}
for(int i = N-1; i >= 0 ; i--) {
for(int j = 0; j < N-i; j++)
System.out.print(" ");
for(int j = 0; j < i*2-1; j++)
System.out.print("*");
System.out.println();
}
}
'자바 > 알고리즘 문제 풀이' 카테고리의 다른 글
백준/2750 수 정렬하기 (0) | 2022.12.03 |
---|---|
백준/1439 뒤집기 (0) | 2022.10.29 |
백준/2439 별찍기2 (0) | 2022.10.28 |
백준/10974 모든 순열 (0) | 2022.10.28 |
백준 - 3040/백설 공주와 일곱 난쟁이 (0) | 2022.10.28 |
댓글