Skip to content

[Algorithm] 삼각 달팽이 #182

Description

@hwangJi-dev

💬 문제

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


💬 Idea

삼각형을 채울 때 n에서부터 ↙️ ➡️ ↖️ 의 규칙을 따르고, 채워지는 기준 개수가 -1씩 줄어든다는 것을 발견하여 해당 원리를 이용해 문제를 풀이했다.


💬 풀이

import Foundation
func solution(_ n:Int)->[Int]{varn= n
vartriangleIdx=1vartriangleFilledCnt=0 // 삼각형에 채워지는 숫자 개수
varnumber=0 // 계속 오르는 숫자
vary=-1 // y 좌표
varansArr:[[Int]]=[]foriin1...n {
ansArr.append(Array(repeating:0, count: i))}while n >0{
number +=1
triangleFilledCnt +=1switch triangleIdx %3{case0: // 하강하면서 채워짐
y -=1ansArr[y][ansArr[y].lastIndex(of:0)??0]= number
case1: // 상승하면서 채워짐
y +=1ansArr[y][ansArr[y].firstIndex(of:0)??0]= number
default: // 가장 밑단만 채워짐
ansArr[y][ansArr[y].firstIndex(of:0)??0]= number
}
// 기점: 4 / 3 / 2 / 1
if triangleFilledCnt == n {
n -=1 // 기준 숫자 - 1
triangleIdx +=1 // 삼각형 index + 1
triangleFilledCnt =0}}return ansArr.flatMap({ $0 })}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions