티스토리 뷰

 

접근법


사실 어떤 규칙이 있는지 찾는데도 시간이 오래 걸렸다. 우선 규칙은 예시로 나와있는 출력을 아래와 같이 줄을 

 

그어보면 찾을 수 있다.

 

3 * 3 사각형의 중앙만 뻥 뚫려있는 형태

크게 3 * 3 형태의 사각형만 주목해서 보다 보면 정가운데만 공백으로 이루어져 있는 것을 볼 수 있다. 즉, 재귀로 풀 수 

 

있는 냄새가 풀풀난다. 그래서 필자는 문제를 아래와 같이 접근해 보았다.

 

n은 3의 제곱꼴인 수로만 등장하므로 이 규칙을 따라갈 필요가 있다.

 

규칙에 따라서 주어진 길이에서 3으로 나눈 몫이 1일 경우에는 아예 중앙이 뚫리는 형태,

 

그 외 몫이 다른 값일 경우에는 최초로 3 * 3의 [ '***', '* *', '***' ] 형태의 사각형이 그대로 채워지는 형태로

 

코드를 짜보았다. 

 

풀이


def stars(n):
    matrix=[]
    for i in range(3 * len(n)):
        if i // len(n) == 1:
            matrix.append(n[i % len(n)] + " " * len(n) + n[i % len(n)])
        else:
            matrix.append(n[i % len(n)] * 3)
    return(list(matrix))

star = ["***","* *","***"]
n = int(input())
k = 0
while n != 3:
    n = int(n / 3)
    k += 1
    
for i in range(k):
    star = stars(star)
for i in star:
    print(i)

 

 

@ 문제 출처 : 백준

'프로그래밍 > BOJ' 카테고리의 다른 글

백준 #2798: 블랙잭 [Python]  (0) 2020.02.12
백준 #11729: 하노이 탑 이동 순서 [Python]  (1) 2020.02.12
백준 #10870: 피보나치 수 5  (0) 2020.02.02
백준 #10872: 팩토리얼  (0) 2020.02.02
백준 #1002: 터렛  (0) 2020.01.30
댓글
링크
최근에 올라온 글
Total
Today
Yesterday