프로그래머스 (Swift)/기초
[Day5-1] 코드 처리하기
은더기
2024. 1. 28. 16:42
문제
내 정답 코드
import Foundation
func solution(_ code:String) -> String {
var ref = ""
var mode = false
var idx = 0
for char in code {
if !mode {
if char == "1" {
mode = true
} else {
if idx.isMultiple(of: 2) {
ref += String(char)
}
}
} else {
if char == "1" {
mode = false
} else {
if !idx.isMultiple(of: 2) {
ref += String(char)
}
}
}
idx += 1
}
return ref == "" ? "EMPTY" : ref
}
#
1. 문자열을 순회하며 각 조건에 맞게 해결하였다.
아래 코드로 풀었다가 시간초과로 인한 여러 테스트 케이스를 통과하지 못하였다.
이유는 확실하지는 않지만 위 코드에서는 문자열을 순회하며 문자에 직접 접근하였고 아래 코드에서는 string.index를 통해 offset만큼 색인을 해야 하기 때문에 많은 시간이 걸렸을 것이라고 생각된다.
import Foundation
func solution(_ code:String) -> String {
var ref = ""
var mode = false
for i in 0..<code.count {
if !mode {
if code[code.index(code.startIndex, offsetBy: i)] == "1" {
mode = true
} else {
if i.isMultiple(of: 2) {
ref += String(code[code.index(code.startIndex, offsetBy: i)])
}
}
} else {
if code[code.index(code.startIndex, offsetBy: i)] == "1" {
mode = false
} else {
if !i.isMultiple(of: 2) {
ref += String(code[code.index(code.startIndex, offsetBy: i)])
}
}
}
}
return ref == "" ? "EMPTY" : ref
}
배운 기술