반응형
/* 삼각 달팽이
- 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 1,000 이하입니다.
*/
func solution14(_ n:Int) -> [Int] {
var result:[[Int]] = []
for _ in 1...n {
result.append([])
}
var startIndex:Int = -1
var endIndex:Int = n
var value = 1
for i in 1...(n+2)/3 {
startIndex += 1
endIndex -= 1
if startIndex <= endIndex-1 {
for j in startIndex...endIndex-1 {
result[j].insert(value, at: i-1)
value += 1
}
}
if i <= endIndex+i-result[endIndex].count {
for k in i...endIndex+i-result[endIndex].count {
result[endIndex].insert(value, at: k-1)
value += 1
}
}
startIndex += 1
if 1 <= endIndex-startIndex {
for j in 1...endIndex-startIndex {
result[endIndex-j].insert(value, at:result[endIndex-j].count-i+1)
value += 1
}
}
}
var list:[Int] = []
for r in result {
list += r
}
return list
}
반응형
'# 02 > Swift - CTP' 카테고리의 다른 글
[Swift] 코딩테스트 연습! Lv2. 메뉴 리뉴얼 (0) | 2022.12.19 |
---|---|
[Swift] 코딩테스트 연습! Lv3. 불량 사용자 (0) | 2022.12.19 |
[Swift] 코딩테스트 연습! Lv2. 큰 수 만들기 (0) | 2022.12.19 |
[Swift] 코딩테스트 연습! Lv2. [1차] 프렌즈4블록 (0) | 2022.12.18 |
[Swift] 코딩테스트 연습! Lv3. 단어 변환 (0) | 2022.12.18 |