Search
Duplicate

삼각 달팽이

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(n): if n == 1: return [1] # n x n 배열을 만들어서, # r번째 행의 r+1번째 열 이후부터 -1을 채운다. arr = [[0] * n for _ in range(n)] for r in range(n): for i in range(r+1, n): arr[r][i] = -1 d = 'down' # down, right, up 중 하나 r, c = 0, 0 cnt = 1 while cnt <= n*(n+1)//2: arr[r][c] = cnt if d == 'down': r += 1 if r == n-1: d = 'right' elif arr[r+1][c] != 0: d = 'right' elif d == 'right': c += 1 if c == n-1: d = 'up' elif arr[r][c+1] == -1 or arr[r][c+1] != 0: d = 'up' elif d == 'up': r -= 1 c -= 1 if arr[r-1][c-1] != 0: d = 'down' cnt += 1 answer = [] for row in arr: for v in row: if v == -1: break else: answer.append(v) return answer
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges