boj-2447(星図)


久しぶりに解決した問題...コードがうまく動いていて、少しも問題がないように見えますが、それは何ですか.いつもタイムアウトだったので諦めてまた中に入ってPpyが回っていないことを確認したのでしょうか?
だから前にタイムアウトしたコードを直接pypyに回すと打たれましたははは
本当に无言です.タイムアウトしたらpypyに移動...

ちょっとグレードの問題だったので、かなり悩んでしまいました.
分類ごとに再帰関数で解決しようと思って悩んだ.
以前解いたときに最後に書いたコードも突然現れました!でもクレイジーすぎてコードを説明できない以前のコードと最後に通過したコードを分けて開きます.両方確認しておけばよかったです.
古いコード
import sys

n = int(input())
a = [['*'] * n for i in range(n)]

def star_print(n, list, origin_size):
    origin = origin_size
    if n < 3:
        return list
    for i in range(origin):
        for j in range(origin):
            if j // (n // 3) == 1 and i // (n // 3) == 1: # n = 27 / n // 3 = 9  -> n = 9 / n // 3 = 3          
                for t in range(origin):
                    for p in range(origin):
                        if i + n*t < origin and j + n*p < origin:
                            list[i + n*t][j + n*p] = " "
    return star_print(n // 3, list, origin)
pr = star_print(n, a, n)

for i in range(len(pr)):
    for j in range(len(pr[0])):
        sys.stdout.write(pr[i][j])
    sys.stdout.write("\n")
パスコード
import sys
def print_star(star, N, origin_size):
    if N < 3:
        return star
    else:    
        for i in range(origin_size):
            for j in range(origin_size):
                if (i // (N//3)) % 3 == 1 and (j // (N//3)) % 3 == 1:
                    star[i][j] = ' '
        return print_star(star, N//3, origin_size)

N = int(input())
star_list = [['*'] * N for i in range(N)]

star = print_star(star_list, N, N)
for i in range(N):
    for j in range(N):
        sys.stdout.write(star[i][j])
    sys.stdout.write("\n")
最後のコードを編んだとき、誰かが後ろでナイフを刺したように、突然コードを修正しましたが、コードがよく回っていて、不思議でした.確かにコードがずいぶん短くなって、よく動いて面白い問題です.