[pgs삼각형 배치] list로 삼각형 모양 만들기

Jonas M·2021년 7월 20일
0

Coding Test

목록 보기
8/33
post-thumbnail

프로그래머스 삼각형 배치

List로 모양을 만들어보기

아래 문제를 보면 삼각형 모양으로 숫자를 배치시켜야 한다. Solution 부분의 이미지처럼 list들을 활용해서 숫자 배치를 최대한 삼각형에 가깝게 시키면서 진행할 수 있다.

Question

Solution

PSEUDO

  • 0이나 False로 채워진 삼각형 모양 list 만들기
  • range(1, n+1)의 숫자들을 삼각형 list의 index에 변화를 주면서 하나씩 채워가기
    삼각형 형태로 순차적으로 채워지기 때문에 위 그림상 4, 3, 2를 한 cycle이라 할 수 있고, 그 다음 안쪽 삼각형 모양으로 진행
    각 변으로 채워지는 숫자의 개수는 range(n, 0, -1)로 변함
  • for k in range(n, 0, -3): 3개씩 사이클
    for _ in range(k): 각 변마다 k개씩 숫자 추가
    triangle[i][j] = num
    num += 1
    i += 1 or j += 1 or i-=1, j-=1 (변에 따라)
  • 삼각형 list 내부의 list들을 붙여서 return
def sol(n):

    tri = list()
    for i in range(1, n+1):
        tri.append([False]*i)

    num = 1
    i, j = 0, 0
    for k in range(n, 0, -3): # 5,2
        if k >= 1:
            for _ in range(k):
                tri[i][j] = num
                num += 1
                i += 1
        i -= 1 # 4, 1
        j += 1
        if k-1 >= 1:
            for _ in range(k-1): # 4
                tri[i][j] = num
                num += 1
                j += 1
        i -= 1
        j -= 2 # 3, 3
        if k-2 >= 1:
            for _ in range(k-2): # 3
                tri[i][j] = num
                num += 1
                i -= 1
                j -= 1
        i += 2
        j += 1
    
    ans = list()
    for list1 in tri:
        ans += list1
    return ans
profile
Graduate School of DataScience, NLP researcher

0개의 댓글