본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 2448 별 찍기 * 다시 풀기 *

https://ssu-gongdoli.tistory.com/79

https://hongcoding.tistory.com/90

 

> 나중에 참고할 풀이 블로그

 

너무 어렵다.. 왜 머리가 안 돌아가지.? 이 문제 뭐지ㅠ

 

(22.08.25)


|  제출 1  |

import sys
input = sys.stdin.readline

n = int(input())

template = [[' ',' ','*',' ',' ',' '],
            [' ','*',' ','*',' ',' '],
            ['*','*','*','*','*',' ']]


def recursive(x, y, n):

  if n == 3:
    for i in range(n):
      for j in range(n):
        result[x+i][y+j] = template[i][j]
    return

  for i in range(n):
    for j in range(n):
      if i == 0 and j == n//2:
        recursive(x+i, y+j, n//2)    
      if i == n//2 and j == 0:
        recursive(x+i, y+j, n//2)
      if i == n//2 and j == (n*2)//2:
        recursive(x+i, y+j, n//2)  
      
  
  return


if n == 3:
  for t in template:
    print(''.join(t))
else:
  result = [[" "] * n for _ in range(n)]
  recursive(0, 0, n)

  for r in result:
    print(''.join(r))

결과 이상하게 나오는 것 아는데 일단 기록용으로 제출했다. 오늘 그래도 다른 문제 풀고 넘어오니까 어떻게 접근해야겠다는 보인다! 감동! .. 역시 알고리즘 문제가 양치기다. 그냥 많이 풀면 된다. 이게 맞나보다.. 시간이 약이다 !계속 하자.

일단 이 문제 ..음 범위 나누는게 아무래도 잘 못 된 것 같다. 다시 쪼개보자.

 

지금 요렇게 나온다.

 for i in range(n):
    for j in range(n):
      if i == 0 and j == n//2:
        recursive(x+i, y+j, n//2)    
      if i == n//2 and j == 0:
        recursive(x+i, y+j, n//2)
      if i == n//2 and j == n//2: # 여기 고치니까 
        recursive(x+i, y+j, n//2)

이번엔 또 이렇게 나옴..

왜..? ㅠㅜ