본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 이상한 문자 만들기

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이


  
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 플래그를 토글하여 다음 문자의 짝수/홀수 여부를 업데이트

- 문자열 처리 완료 시 최종 문자열을 반환

 

 

 

첫 번째 함수는 

- 문자열을 하나씩 순회하며 각 문자가 짝수번째인지 홀수번째인지를 판단

- 대문자 또는 소문자로 변환한 후 배열에 추가

- 배열을 결합하여 문자열을 생성

이러한 과정을 거치며, 진행 방식을 확인했을 때 불필요한 배열 조작으로 성능이 떨어질 수 있을 것 같다.

 

하지만 그에 반해 두 번째 함수는 입력된 문자열을 순회하면서 짝수번째 문자인지를 판단하여 대소문자를 변환한 후 바로 결과 문자열에 추가한다. 그렇기 때문에 첫 번째 함수와 비교 했을 때 배열을 사용하는 과정이 없어 더 효율적일 것으로 보인다. 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31