프로그래머스_이상한 문자 만들기_uppercased의 출력은 string이다.

hankyulee·2021년 10월 13일
0

Swift coding test 준비

목록 보기
28/57
func solution(_ s:String) -> String {
    var words = s.components(separatedBy:" ")
    var result = [String]()
    for index in 0..<words.count {
        var array = Array(words[index])
        (0..<array.count).map{
            print(type(of:array[$0]))
            if $0 % 2 == 0 {
                array[$0] = Character(array[$0].uppercased())
            } else {array[$0] = Character(array[$0].lowercased())}
        }
        result.append(array.map{String($0)}.joined(separator:""))
        //print(array.map{String($0)}.joined(separator:""))
        //print(array.joined(separator:""))
        //words[index] = array.joined()
    }
    return result.joined(separator:" ")
}
  • 처음에 else 문을 안했더니 틀렸다. 문제에서 마치 입력이 소문자로 들어올 것처럼 이해됐기때문이다. 다음부터는 편견을 가지지 않고 푸는걸로..
    다음과 같이 축약할 수도있다.
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.joined()}.joined(separator: " ")
}

깨달은것:

  • [1,3] + [2,4] = [1,3,2,4]
  • "qe"+"qr" = "qeqr"
  • character + character = 불가
  • uppercased의 출력은 string이다.

0개의 댓글