스택을 만들어 removeFirst 를 사용하여 해결해도 되지만 인덱스를 사용하여 해결하는 방법이 성능적으로 뛰어납니다.
removeFirst 를 사용하면 모든 인덱스가 계속해서 메모리 내부의 주소값을 바꿔줘야하는 리스트를 감수하지 않는 편이 좋습니다.
func solution(_ s:String) -> String {
let s = s.map { String($0) }
var stack: [String] = []
var index = 0
while index < s.count {
if s[index] == " " {
stack.append(s[index])
index += 1
} else {
stack.append(s[index].uppercased())
index += 1
while index < s.count && s[index] != " " {
stack.append(s[index].lowercased())
index += 1
}
}
}
return stack.joined()
}
'Algorithm > programmers' 카테고리의 다른 글
프로그래머스 - 다음 큰 숫자 (0) | 2024.10.16 |
---|---|
프로그래머스 - 이진 변환 반복하기, feat. 이진 변환, 진수 변환 (0) | 2024.10.15 |
프로그래머스 - 최솟값 만들기 (0) | 2024.10.13 |
프로그래머스 - 올바른 괄호 (0) | 2024.10.10 |
프로그래머스 - 메뉴 리뉴얼 feat. dfs (0) | 2024.10.08 |