문제
이상한 문자 만들기
문제파악하기
- 공백을 만나면 인덱스를 초기화 시키고 반환할
ans
에 공백을 추가하고
- 인덱스가 짝수라면
uppercased()
하고 ans
에 추가하고
- 인덱스가 홀수라면
lowercased()
하고 ans
에 추가한다.
풀이
func solution(_ s:String) -> String {
var idx = 0
var ans = ""
for i in s {
if i == " " {
idx = 0
ans += " "
continue
} else if idx % 2 == 0 {
ans += i.uppercased()
idx += 1
} else {
ans += i.lowercased()
idx += 1
}
}
return ans
}
🤔 FEEDBACK
- 이번건 피드백은 잘 모르겠고 13점을 받아서 그냥 기쁘다.
다른 풀이
func solution(_ s:String) -> String {
var check = true
var result = ""
for i in s
{
if(i == " ")
{
result += String(i)
check = true
}else{
if(check)
{
result += String(i).uppercased()
check = false
}else{
result += String(i).lowercased()
check = true
}
}
}
return result
}
- 나랑 비슷하게 풀었는데 배열을 안쓰고 푼 경우!
i
가 Character
니까 String(i)
으로 바꿔서 +=
하면되는거였다.
- 그리고
idx
를 계속 + 시키지 않고 Bool
로 체크만 하면되는거였다.
import Foundation
func solution(_ s:String) -> String {
let a = s.components(separatedBy: " ").map { $0.enumerated().map { $0.offset % 2 == 0 ? $0.element.uppercased() : $0.element.lowercased() } }
return a.map{ $0.map { $0 }.joined() }.joined(separator: " ")
}
- .. 너무 길어
components
보다 split
이 더 효율이 좋다고 함