문제
내 정답 코드
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가 모든 배열을 채우면 종료된다.
배운 기술
'프로그래머스 (Swift) > 기초' 카테고리의 다른 글
[Day25-3] 정사각형으로 만들기 (0) | 2024.05.26 |
---|---|
[Day25-2] 특별한 이차원 배열 2 (0) | 2024.05.26 |
[Day24-5] 특별한 이자원 배열 1 (0) | 2024.05.26 |
[Day24-4] l로 만들기 (0) | 2024.05.26 |
[Day24-3] 조건에 맞게 수열 변환하기 3 (0) | 2024.05.26 |