프로그래머스 (Swift)/기초
[Day25-1] 정수를 나선형으로 배치하기
은더기
2024. 5. 26. 22:57
문제
내 정답 코드
import Foundation
func solution(_ n:Int) -> [[Int]] {
var result:[[Int]] = []
(0..<n).map {_ in result.append(Array(repeating: 0, count: n)) }
var round: Int = 1
var count: Int = 1
var value: Int = 0
while(count != n*n+1) {
if round == 1 {
let row = value
for i in 0..<n {
if result[row][i] == 0 {
result[row][i] = count
print("\(value), \(i), \(count)")
count += 1
value = i
}
}
round += 1
} else if round == 2 {
let column = value
for i in 0..<n {
if result[i][column] == 0 {
result[i][column] = count
count += 1
value = i
}
}
round += 1
} else if round == 3 {
let row = value
for i in (0..<n).reversed() {
if result[row][i] == 0 {
result[row][i] = count
count += 1
value = i
}
}
round += 1
} else if round == 4 {
let column = value
for i in (0..<n).reversed() {
if result[i][column] == 0 {
result[i][column] = count
count += 1
value = i
}
}
round = 1
}
}
return result
}
#
1. 1라운드는 -> 방향, 2는 아래 방향, 3은 <-방향, 4는 위 방향이다.
2. n을 받아 2차원 정사각형 배열을 만들고 모두 0으로 채운다.
3. 라운드를 돌며 0이 아니면 값을 count를 늘려가며 채운다.
4. 이 때, 0이 아닌 값을 value에 저장하여 열/행 인덱스를 기억하고
5. 다음 라운드에서 위 인덱스부터 라운드를 진행한다.
6. count가 모든 배열을 채우면 종료된다.
배운 기술