[프로그래머스/python] 삼각달팽이
2022. 8. 23. 16:34ㆍ알고리즘/프로그래머스
반응형
삼각 달팽이
월간 코드 챌린지 시즌1
문제
풀이
2차원 배열에서 1부터 삼각형의 방향따라 증가시켜가며 배열을 채워갔습니다.
그리고 크기는 방향을 전환할수록 1씩 줄어듭니다.
값을 1부터 시작하며 아래로 내려가는 변부터 시작합니다.
- (x,y) 로 설정되었다면 (x-1, y) 을 삼각형의 크기(N)만큼 진행합니다.
- 이후 아랫변을 진행하게 되는데 (x, y+1) 을 진행합니다.
- 이후 남은 변을 채울 시 대각선으로 역으로 올라가기 때문에 (x-1, y-1) 을 진행합니다.
매번 방향을 전환할 때 마다 N-1을 진행하여 변의 길이 조절을 합니다.
또한 이전에 진행한 x, y에 대해서 값을 조정 해주는 과정이 필요합니다.
풀이코드
def solution(n):
answer = []
li = [[0]*n for i in range(n) ]
num_count = 1
x=0
y=0
while(n>0):
for i in range(n):
li[x][y] = num_count
x+=1
num_count+=1
n-=1
if n<=0:
break
x-=1
y+=1
for i in range(n):
li[x][y] = num_count
y+=1
num_count+=1
n-=1
if n<=0:
break
y-=2
x-=1
for i in range(n):
li[x][y] = num_count
x-=1
y-=1
num_count+=1
n-=1
if n<=0:
break
x+=2
y+=1
for l in li:
for i in l:
if i==0:
continue
else:
answer.append(i)
return answer
가장 인기 많은 코드
def solution(n):
dx=[0,1,-1];dy=[1,0,-1]
b=[[0]*i for i in range(1,n+1)]
x,y=0,0;num=1;d=0
while num<=(n+1)*n//2:
b[y][x]=num
ny=y+dy[d];nx=x+dx[d];num+=1
if 0<=ny<n and 0<=nx<=ny and b[ny][nx]==0:y,x=ny,nx
else:d=(d+1)%3;y+=dy[d];x+=dx[d]
return sum(b,[])
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/python] 영어 끝말잇기 (0) | 2022.08.23 |
---|---|
[프로그래머스/python] 배달 (0) | 2022.08.23 |
[프로그래머스/python] 두 큐 합 같게만들기 (0) | 2022.08.23 |
[프로그래머스/python] 추석트래픽 (0) | 2022.08.23 |
[프로그래머스/javascript] 3진법 뒤집기 (0) | 2022.08.15 |