[#10994] 별 찍기 - 19
문제
#10994 별 찍기 - 19
Silver4
적용 알고리즘: Implementation 알고리즘
풀이 방법
- 처음 보드는 비어있고, 각 네모별로 보드에 그린다.
- 특정 좌표의 x, y중 하나라도 n이 포함되어 있으면, 그 자리는 “*“이다.
- 네모와 네모 사이의 간격이 한 칸 있으므로 별 박스 간 좌표 이동은 2이다.
- 가장 안쪽(정중앙)의 별은 별도로 찍어준다.
코드 흐름
- 별이 찍힐 보드를 공백으로 설정한다.
- 맨 바깥 별 박스에 대해서 별을 채워나간다. 특정 좌표의 x, y 인덱스 중 하나가 n이라면, 해당 위치를 별로 채운다.
- 이를 모든 별 박스(중앙 제외) 에 대해서 반복한다.
- 마지막으로 중앙에 별을 채운다.
코드
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
오히려 이런 단순해 보이는 문제들이 구현을 하는데에 있어서 더 헷갈리는 것 같다.