1 minute read

문제

#10994 별 찍기 - 19
Silver4
적용 알고리즘: Implementation 알고리즘


풀이 방법

  • 처음 보드는 비어있고, 각 네모별로 보드에 그린다.
  • 특정 좌표의 x, y중 하나라도 n이 포함되어 있으면, 그 자리는 “*“이다.
  • 네모와 네모 사이의 간격이 한 칸 있으므로 별 박스 간 좌표 이동은 2이다.
  • 가장 안쪽(정중앙)의 별은 별도로 찍어준다.

코드 흐름

  1. 별이 찍힐 보드를 공백으로 설정한다.
  2. 맨 바깥 별 박스에 대해서 별을 채워나간다. 특정 좌표의 x, y 인덱스 중 하나가 n이라면, 해당 위치를 별로 채운다.
  3. 이를 모든 별 박스(중앙 제외) 에 대해서 반복한다.
  4. 마지막으로 중앙에 별을 채운다.

코드

n = int(input())
k = 1 + (n - 1) * 4

board = [[" " for _ in range(k)] for _ in range(k)]

low = 0
top = k
while (low != top - 1):
    for i in range(low, top):
        for j in range(low, top):
            if (i == low or i == top - 1 or j == low or j == top - 1):
                board[i][j] = "*"
    low += 2
    top -= 2

board[n * 2 - 2][n * 2 - 2] = "*"

for i in range(k):
    for j in range(k):
        print(board[i][j], end="")
    print()

체감 난이도: 4.2/5
오히려 이런 단순해 보이는 문제들이 구현을 하는데에 있어서 더 헷갈리는 것 같다.