문제
내 정답 코드
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
}
배운 기술
'프로그래머스 (Swift) > 기초' 카테고리의 다른 글
[Day5-3] 주사위 게임 2 (1) | 2024.01.31 |
---|---|
[Day5-2] 등차수열의 특정한 항만 더하기 (1) | 2024.01.30 |
[Day4-5] flag에 따라 다른 값 반환하기 (0) | 2024.01.28 |
[Day4-4] 조건 문자열 (0) | 2024.01.28 |
[Day4-3] 홀짝에 따라 다른 값 반환하기 (1) | 2024.01.28 |