알고리즘 문제 풀기
<릿코드> 6. ZigZag Conversion
studying develop
2020. 12. 24. 02:30
class Solution {
func convert(_ s: String, _ numRows: Int) -> String {
var arr = [[Character?]](repeating: Array(repeating: nil, count: 1001), count: 1001)
let str = Array(s)
var row = 0
var col = 0
var phase: Phase = .down
for ch in str {
if row == 0 {
phase = .down
} else if row == numRows - 1 {
phase = .up
}
arr[row][col] = ch
if phase == .down {
row += 1
} else {
row -= 1
col += 1
}
}
var strNew = ""
for i in 0...str.count {
for j in 0...str.count {
if let ch = arr[i][j] {
strNew += String(ch)
}
}
}
enum Phase {
case down
case up
}
return strNew
}
}
시뮬레이션 느낌으로 푸는 방법 외에는 잘 모르겠다.
음 너무 노가다틱해서 다시 생각해 봐야겠다.