[Programmers] [Lv.1] [Swift] 이상한 문자 만들기

doyeonjeong_·2022년 7월 25일
0

프로그래머스

목록 보기
9/35

문제

이상한 문자 만들기

문제파악하기

  1. 공백을 만나면 인덱스를 초기화 시키고 반환할 ans에 공백을 추가하고
  2. 인덱스가 짝수라면 uppercased() 하고 ans에 추가하고
  3. 인덱스가 홀수라면 lowercased() 하고 ans에 추가한다.

풀이

func solution(_ s:String) -> String {
    var idx = 0
    var ans = ""
    for i in s {
        if i == " " {
            // print("공백")
            idx = 0
            ans += " "
            continue
        } else if idx % 2 == 0 {
            // print(i.uppercased())
            ans += i.uppercased()
            idx += 1
        } else {
            // print(i)
            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
}
  • 나랑 비슷하게 풀었는데 배열을 안쓰고 푼 경우!
  • iCharacter니까 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이 더 효율이 좋다고 함
profile
블로그 이사중 🚚 byukbyak.tistory.com

0개의 댓글