본문 바로가기
코딩테스트

삼각 달팽이

by 느림보어른 2021. 5. 26.

문제풀이

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

'코딩테스트' 카테고리의 다른 글

신규 아이디 추천  (0) 2021.05.28
체육복  (0) 2021.05.28
문자열 압축  (0) 2021.05.26
짝지어 제거하기  (0) 2021.05.25
내적  (0) 2021.05.25