(문제, 그림 출처 : 프로그래머스 - 삼각달팽이 )
def solution(n):
row = []
col = []
# 좌표 구하기 ( 행렬화 )
rcount = 0
ccount = 1
cnt = 1001
for i in range(n,0,-1):
cnt -= 1
for j in range(i):
if cnt % 3 ==0 :
row.append(rcount)
ccount += 1
col.append(ccount)
elif cnt % 3 == 1:
rcount += 1
row.append(rcount)
col.append(ccount)
else :
rcount -= 1
row.append(rcount)
ccount -= 1
col.append(ccount)
loc = [[a,b] for a,b in zip(row,col)]
# 배치
ans = 0
result = [[0]*(res+1) for res in range(n)]
for num in loc:
ans += 1
result[num[0]-1][num[1]-1]= ans
# 한개의 리스트에 담기
answer = [fin for f in result for fin in f]
return answer

| n | result |
|---|---|
| 4 | [1,2,9,3,10,8,4,5,6,7] |
| 5 | [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] |
| 6 | [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] |