관리 메뉴

나예

[프로그래머스] 삼각달팽이(파이썬, 구현) 본문

카테고리 없음

[프로그래머스] 삼각달팽이(파이썬, 구현)

나예_ 2023. 9. 5. 21:06

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/68645

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 풀이

처음 문제를 보면서 빈 배열을 사이즈에 맞춰 만들어 둔 후, 특정 방향으로 이동해 배열에 숫자를 채우려고 했다. 이때 갈 수 있는 방향은 그림의 (1),(2),(3) 총 세가지

(1)로 갈때는 x값만 1 증가

(2)로 갈때는 y값만 1증가

(3) 방향으로 갈때는 x 는 1 감소, y는 1 감소

방향을 바꾸는 경우는 해당 방향으로 갔을때 더이상 배열이 존재하지 않거나 배열값이 채워져 있는 경우다

 

3. 코드

<변수 설명> 

answer : 정답 배열

arr: 숫자 채워넣을 배열

fin_num : 넣을 숫자 중 제일 큰 숫자 

nx, ny : 현재 위치 (now x, now y)

dx, dy 배열: 이동할 방향 배열 

dir : 현재 이동할 방향

def solution(n):
    answer = []
    arr=[]
    for i in range(1,n+1):
        arr.append([0]*i)
    fin_num = (n-1)*n//2 + n
    nx=0
    ny=0
    
    dx=[1,0,-1]
    dy=[0,1,-1]
    dir = 0
    for i in range(1,fin_num+1):
        arr[nx][ny] = i
        if 0<= nx + dx[dir] <n and 0<= ny +dy[dir] < n and arr[nx+dx[dir]][ny+dy[dir]] ==0:
            nx += dx[dir]
            ny += dy[dir]
        else:
            dir +=1
            if dir >=3:
                dir=0
            nx += dx[dir]
            ny += dy[dir]
            
   
    for a in arr:
        answer += a
    
    return answer
728x90