관리 메뉴

NineTwo meet you

[백준] 10994 별 찍기 - 19 본문

프로그래밍 문제/백준

[백준] 10994 별 찍기 - 19

NineTwo 2020. 6. 26. 22:14
반응형

출처


문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 차례대로 별을 출력한다.

예제


풀이

ArrayList에 가장 기본이 되는 *이 존재한다.

n까지 다음과 같은 일을 반복한다.

 

    1. 이전 모양이 존재한다. (파란 사각형)

    2. 0 인덱스 값부터 마지막 인덱스까지 다음과 같은 문자열을 추가한다.

    3. ArrayList의 끝에 *(이전 문자열의 길이-2 만큼의 공백)* 인 문자열을 추가한다.

    4. ArrayList의 끝에 이전 문자열의 길이만큼의 *줄을 추가한다.

 

 

n까지 모든 일을 수행했을 때,

al.size()-1부터 1까지 ArrayList를 출력하고 다시 0부터 al.size()-1까지의 ArrayList를 출력한다.

코드

 

import java.util.ArrayList;
import java.util.Scanner;
public class BOJ10994 {
static int n;
static ArrayList<String> al = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
al.add("*");
for(int a = 1; a < n; a++) {
for(int i = 0 ; i < al.size(); i++) {
String temp = al.get(i);
al.remove(i);
al.add(i, "* "+temp+" *");
}
String temp = al.get(0);
String empty = "";
for(int i = 0; i < temp.length()-2; i++) {
empty += " ";
}
al.add("*"+empty+"*");
temp = "";
for(int i = 0; i < empty.length()+2; i++) {
temp += "*";
}
al.add(temp);
}
for(int i = al.size()-1; i > 0; i--) {
System.out.println(al.get(i));
}
for(int i = 0 ; i < al.size(); i++) {
System.out.println(al.get(i));
}
}
}
view raw BOJ10994.java hosted with ❤ by GitHub

 

반응형

'프로그래밍 문제 > 백준' 카테고리의 다른 글

[백준] 10996 별 찍기 - 21  (0) 2020.06.26
[백준] 10995 별 찍기 - 20  (0) 2020.06.26
[백준] 10993 별 찍기 - 18  (0) 2020.06.26
[백준] 10992 별 찍기 - 17  (0) 2020.06.26
[백준] 10991 별 찍기 - 16  (0) 2020.06.26
Comments