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
}
}
시뮬레이션 느낌으로 푸는 방법 외에는 잘 모르겠다.
음 너무 노가다틱해서 다시 생각해 봐야겠다.
'알고리즘 문제 풀기' 카테고리의 다른 글
<leetCode> 8. String to Integer (atoi) (0) | 2021.01.15 |
---|---|
<leetCode> 7. Reverse Integer (0) | 2021.01.08 |
<릿코드> 5. Longest Palindromic Substring (0) | 2020.12.18 |
<leetCode> 3. Longest Substring Without Repeating Characters (0) | 2020.12.15 |
<프로그래머스> [카카오 인턴 2020] 수식 최대화 (0) | 2020.09.19 |