1707번 : 달팽이 삼각형

김민관·2021년 9월 29일
0

정올_Begginer_Coder

목록 보기
2/3

문제보기

파이썬 코드

import sys

n = int(sys.stdin.readline())  # 사각형의 크기

square = [[0]*n for _ in range(n)]  # n x n 크기의 사각형 만들기 및 0 초기화
num = 1
move = n
x = 0; y = -1  # 첫 시작 좌표

while move > 0:
    for i in range(move):
        y += 1
        square[x][y] = num
        num += 1

    move -= 1
    for i in range(move):
        x += 1
        square[x][y] = num
        num += 1

    for i in range(move):
        y -= 1
        square[x][y] = num
        num += 1

    move -= 1
    for i in range(move):
        x -= 1
        square[x][y] = num
        num += 1

for i in range(n):
    for j in range(n):
        print(square[i][j], end=' ')
    print()

코드 설명

  • nxn 크기의 2차원배열 sqaure 생성 및 초기화
  • 이동횟수를 나타내는 move 변수와 시작좌표 설정을 위해 x,y 변수 설정
  • y가 -1인 이유는 처음에 y +=1 을 하면서 들어갔을때 sqaure[0][0]에서 시작해야하기 때문
  • 방향이 위 혹은 아래로 내려갈때 이동횟수가 1개씩 줄어듬

포인트

탐색하듯이 방향('R','L','U','D')에 대하여 조건문을 만들어 해결할까 했지만 굳이 그렇게 할것 없이 각 방향별로 이동해야 하는 횟수와 그에 따른 x,y 값만 변경해주며 값을 채워주면 됐음. 항상 가독성과 효율성을 동시에 챙길 수 있는 깔끔한 코드를 짜기!

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

0개의 댓글

관련 채용 정보