1331번 : 문자 마름모

김민관·2021년 10월 1일
0

정올_Begginer_Coder

목록 보기
3/3

문제보기

파이썬 코드

n = int(input())

arr = [[" "]*(2*n-1) for _ in range(2*n-1)]

c = 'A'
x = 0
y = n-1
count = n
direct = [1,2,3,4]  # 왼쪽아래, 오른쪽아래, 오른쪽위, 왼쪽위

while True:
    for i in range(count-1):
        arr[x][y] = c
        x += 1
        y -= 1
        c = chr(ord(c)+1)
        if ord(c) == ord('Z')+1:
            c = 'A'
    for i in range(count-1):
        arr[x][y] = c
        x += 1
        y += 1
        c = chr(ord(c)+1)
        if ord(c) == ord('Z')+1:
            c = 'A'
    for i in range(count-1):
        arr[x][y] = c
        x -= 1
        y += 1
        c = chr(ord(c)+1)
        if ord(c) == ord('Z')+1:
            c = 'A'
    for i in range(count-1):
        arr[x][y] = c
        x -= 1
        y -= 1
        c = chr(ord(c)+1)
        if ord(c) == ord('Z')+1:
            c = 'A'
    x += 1
    count -= 1
    if count == 0:
        if ord(c) == ord('Z')+1:
            c = 'A'
        arr[x-1][y] = c
        break

for i in range(2*n-1):
    for j in range(2*n-1):
        print(arr[i][j], end=' ')
    print()

코드설명

  • 먼저 arr[2n-1][2n-1] 크기의 배열을 만들기
  • 첫 시작점은 (0,n-1)
  • 한바퀴에 N-1,N-2,...1번씩 4번 채워짐

포인트

하드코딩느낌으로 성공하긴했는데 똑같은 부분이 자주 반복돼 깔끔하지는 않음. 간소화해보려 했지만 실패.... 나중에 또 고민해보기

profile
게임 개발일지 & IT 소식들 공유

0개의 댓글