티스토리 뷰

BOJ

[백준/BOJ] 2447번: 별 찍기(Python)

jeongyeji 2021. 4. 3. 15:37

def drawStar(n):
    starlist = []
    l = len(n)
    for i in range(3 * l):
        idx = i % l
        if i // l == 1:
            starlist.append(n[idx] + " " * l + n[idx])
        else:
            starlist.append(n[idx] * 3)
    return starlist

star = ["***", "* *", "***"]
num = [3 ** i for i in range(1, 8)] # 1<=k<8인 3^k값 저장

for _ in range(num.index(int(input()))):
    star = drawStar(star)

for s in star:
    print(s)

편의상 ***\n* *\n***을 *으로 표현함

1. 파랑색 빈 칸의 index x, y는 모두 (1, 4, 7) 안에 있다. => 3으로 나눈 나머지가 1임
2. 주황색 빈 칸의 index x, y는 모두 (3, 4, 5) 안에 있다. => 3으로 나눈 몫이 1임

각 행에 대하여 for문을 돌리는데
그 행을 n의 길이로 나누었을 때 몫이 1이면 중간이 빈 값을 리스트에 추가하고,
몫이 1이 아니면 n[i % len(l)]*3 추가한다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함