본문 바로가기
알고리즘/백준

백준 2448번 별찍기 - 11 자바

by 코리늬 2018. 6. 19.

별찍기 문제 중 이런 문제는 처음본 것 같다.

이 문제처럼 반복되는 모양의 구조를 프랙탈 구조라고 한다.

반복되는 구조를 잘 파악하는 것이 핵심이다.


똑같은 모양을 가지고 구조를 만들기 때문에 첫 모양은 규칙을 찾으려 하지 말고 임의로 생성해준다.

arr[0] = "  *  ";

arr[1] = " * * ";

arr[2] = "*****";


N = 6인경우 1, 2, 3 은 기본 모양을 나타내고,

4, 5, 6은 1, 2, 3줄을 이용해 2개의 기본 삼각형을 그린다.

구조를 잘 보면 두 모양 사이에는 공백이 존재하는 것을 볼 수 있다.

따라서,

arr[3] = arr[0] + " " + arr[0];

arr[4] = arr[1] + " " + arr[1];

arr[5] = arr[2] + " " + arr[2];

이와 같은 형태를 띄게 된다.

위 과정을 끝내고 나면

  *  

 * * 

*****

  *        *

 * *     *  *

*****   ***** 이러한 형태가 된다.

이제 좌우에 공백을 맞춰 문제에서 요구하는 형태로 나타내야 한다.

이 때, 좌우 공백칸수를 잘 보면 N/2임을 찾을 수 있다.

그렇기 때문에 

arr[0] = "   " + arr[0] + "   ";

arr[1] = "   " + arr[1] + "   ";

arr[2] = "   " + arr[2] + "   ";

공백은 3의 배수개로 늘어나기 때문에 나는 3칸을 넣어주었다.


'알고리즘 > 백준' 카테고리의 다른 글

백준 2577번 숫자의 개수  (0) 2018.06.21
백준 1152번 단어의 개수  (0) 2018.06.19
백준 1065번 한수  (0) 2018.06.15
백준 4673번 셀프넘버  (0) 2018.06.15
백준 4344번 평균은 넘겠지 java  (0) 2018.06.09

댓글