문제풀이
import math
def solution(n):
answer = []
triangle = [0 for i in range(n)]
for i in range(0, n):
triangle[i] = [0 for i in range(i+1)]
num = 1
max_num = 0
for i in range(1, n+1):
max_num += i
y = 0
x = 0
while(n > 0):
if n==0:
break
for i in range(0, n):
triangle[y][x] = num
num += 1
y += 1
if n==0:
break
n -= 1
x += 1
y -= 1
for i in range(0, n):
triangle[y][x] = num
num += 1
x += 1
if n==0:
break
n -= 1
y -= 1
x -= 2
for i in range(0, n):
triangle[y][x] = num
num += 1
x -= 1
y -= 1
x+=1
y+=2
n-=1
for line in triangle:
answer += line
return answer
이번 문제는 특별한 알고리즘으로 해결하는 것은 아니다. 처음엔 숫자 간에 특별한 관계(식)가 있는 줄 알았지만 그냥 우리가 생각하는 대로 풀면 되는 문제였다.
나의 코드를 보면 그림과 일치한 이중 리스트를 만들고 문제에서 말한 순서대로 숫자를 채워나가고 다 채우는 조건을 충족하면 반복에서 빠져나온다. 그다음 이중 리스트를 하나의 리스트로 더해주면 답이 나온다.
알고리즘
딱히 없다.
출처
문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr