Codemental

[baekjoon][Java] 2447번 - 별 찍기 - 10 본문

Java/코딩테스트(baekjoon)

[baekjoon][Java] 2447번 - 별 찍기 - 10

s.a 2022. 7. 4. 15:20
반응형

문제

 

제출답안 (2022.07.04)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int num = sc.nextInt();
		String[] firstStar = {"***",
			              "* *",
				      "***"};

		if(num == 3) {
			printArray(firstStar);
		}else {
			String[] result = drawStringStar(firstStar, num);
			printArray(result);
		}
	}

    public static String[] drawStringStar(String[] beforeArray, int num) {
		String[] result = new String[beforeArray.length*3];
		int childRow = 0;
		StringBuilder sb = null;

		for(int i = 0 ; i < result.length; i++) {
			String str = beforeArray[childRow];

			sb = new StringBuilder("");
			sb.append(str+str+str);
			result[i] = sb.toString();
			childRow++;
			if(childRow == beforeArray.length) {
				childRow = 0;
			}
		}
		for(int i = 0 ; i < result.length; i++) {
			if(result.length/3 <= i && i < result.length * 2 /3) {
				sb = new StringBuilder(result[i]);
				for(int j = 0 ; j < result.length ; j++) {
					if(result.length/3 <= j && j < result.length * 2 /3) {
						sb.setCharAt(j, ' ');
					}
				}
				result[i] = sb.toString();
			}
		}

		if(result.length == num) {
			return result;
		}else {
			return drawStringStar(result, num);
		}
	}

	public static void printArray(String[] array) {
		for(int i = 0 ; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}
}

 

채점결과 (2022.07.04)