내 풀이
func solution(_ s:String) -> String {
var arr: [String] = []
var x = 0
for i in s {
if x % 2 == 0 {
arr.append(String(i.uppercased()))
} else {
arr.append(String(i.lowercased()))
}
x += 1
if i == " " {
x = 0
}
}
return arr.joined()
}
- 빈 배열 arr 선언
- 변수 x를 0으로 초기화,
변수는 현재 단어에서 몇 번째 알파벳인지를 나타냄
- 문자열 s를 반복문을 통해 순회
- 각 문자열의 문자가 짝수번째 알파벳인지 홀수번째 알파벳인지를 판별
- 짝수번째 알파벳이면 대문자로 변환하여 배열 arr에 추가
홀수번째 알파벳이면 소문자로 변환하여 배열 arr에 추가
- x 값을 1 증가
다음 문자가 몇 번째 알파벳인지를 나타내기 위함
- 만약 현재 문자가 공백(" ")인 경우, x 값을 0으로 초기화
다음 단어의 첫 번째 알파벳이라는 것을 나타냄
- 반복문이 끝나면 배열 arr의 각 요소를 합쳐서 하나의 문자열로 만들어 반환
또 다른 풀이
func solution(_ s: String) -> String {
var result = ""
var isEven = true
for char in s {
// 공백인 경우
if char == " " {
isEven = true
result.append(char)
} else {
// 알파벳인 경우
if isEven {
result.append(char.uppercased())
} else {
result.append(char.lowercased())
}
isEven.toggle()
}
}
return result
}
- 위 입력 문자열을 순회하며 각 문자를 처리
- 문자가 공백인 경우, isEven 플래그를 true로 설정하여 다음 단어의 첫 글자가 짝수번째 문자임을 나타냄
공백 문자를 결과 - 문자열에 그대로 추가
- 문자가 알파벳인 경우에는 isEven 플래그의 값에 따라 대문자 또는 소문자로 변환하여 결과를 문자열에 추가
isEven이 true인 경우: 문자를 대문자로 변환하여 추가
isEven이 false인 경우: 문자를 소문자로 변환하여 추가
- 각 문자를 처리한 후, isEven 플래그를 토글하여 다음 문자의 짝수/홀수 여부를 업데이트
- 문자열 처리 완료 시 최종 문자열을 반환
첫 번째 함수는
- 문자열을 하나씩 순회하며 각 문자가 짝수번째인지 홀수번째인지를 판단
- 대문자 또는 소문자로 변환한 후 배열에 추가
- 배열을 결합하여 문자열을 생성
이러한 과정을 거치며, 진행 방식을 확인했을 때 불필요한 배열 조작으로 성능이 떨어질 수 있을 것 같다.
하지만 그에 반해 두 번째 함수는 입력된 문자열을 순회하면서 짝수번째 문자인지를 판단하여 대소문자를 변환한 후 바로 결과 문자열에 추가한다. 그렇기 때문에 첫 번째 함수와 비교 했을 때 배열을 사용하는 과정이 없어 더 효율적일 것으로 보인다.
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 삼총사 (0) | 2024.02.29 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 3진법 뒤집기 (0) | 2024.02.28 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 최대공약수와 최소공배수 (1) | 2024.02.27 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 직사각형 별찍기 (1) | 2024.02.26 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 행렬의 덧셈 (2) | 2024.02.23 |