[프로그래머스/Python] 삼각 달팽이

PhilAI·2023년 9월 8일
0

📌 문제

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

📌 풀이

풀이 1 - (성공)

문제의 규칙은 아래 이미지와 같다:

채우는 방향이 3가지로 나뉘어져 있으며 n만큼 실행하였을때 삼각형이 모두 채워진다. (규칙을 찾을때는 n이 다른 경우에도 잘맞는지를 꼭 더블체크하자!)

  1. n*n의 매트릭스를 생성한다.
  2. 숫자가 1부터 시작하기때문에 cnt에 1을 저장한다.
  3. y,x = -1,0을 저장한다. 이는 매트릭스의 위치를 표현하는 좌표이다. y를 0이 아닌 -1로 한 이유는 for문 첫번째 실행이 무조건 아래로 숫자를 채우는 형식이여야 하기 때문이다.
  4. for문을 n만큼 돈다.
    2-1. i/3의 나머지가 1인경우, 세로방향으로 한칸씩 채운다. cnt에 1을 더한다.
    2-2. i/3의 나머지가 2인경우, 가로방향으로 한칸씩 채운다.cnt에 1을 더한다.
    2-3. i/3의 나머지가 3인경우, 윗 대각선방향으로 한칸씩 채운다.cnt에 1을 더한다.
def solution(n):
    answer = []
    _list = [[0]*i for i in range(1, n+1)]
    y,x = -1,0 
    cnt = 1
    for i in range(n):
        for _ in range(i,n):
        # for j in range(n):
            if i % 3 == 0: #아래로 한칸씩 채우기
                y += 1 
            elif i% 3 == 1: #오른쪽으로 한칸씩 채우기
                x += 1 
            elif i% 3 == 2: #위대각선으로 한칸씩 채우기
                x -= 1
                y -= 1
            _list[y][x] = cnt
            cnt+=1 
            
    for i in _list:
        for j in i:
            answer.append(j)
            
    return answer
profile
철학과가 도전하는 Big Data, AI

0개의 댓글