IOS/Swift Algorithm Level 1

Swift. 이상한 문자 만들기

 문제.

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

 풀이.

func solution(_ s:String) -> String {
var index = 0
let str = s.map { (str: Character) -> String in
        var result = ""
        if str != " " {
            if index % 2 == 0 {
            result = result + str.uppercased()
        } else {
            result = result + str.lowercased()
        }
            index += 1
        }else {
            index = 0
            result = result + " "
        }
        return result
    }
    return str.joined()
}

문제 풀이. 

  1. 이번 문제는 상당히 힘겹게 풀었습니다. 풀이자가 적어서 예상은 했지만...
  2. 일단은 조건에 보면 알파벳의 순서가 아니라 문자열에서의 순서에서 공백을 기준으로 인덱스를 초기화 시킨다고 나와있습니다.
  3. 맨처음 문제의 접근을 공백을 기준으로 나누고 접근하자 고 해서 split을 썻는데 그렇게 하면 문제의 입력에 공백이 앞 뒤로 있었을 경우 공백을 판단할 수가 없어서 여러 테스트에서 불합격을 맞았습니다.
  4. 해서 자꾸 주어진 값에 따라서 최대한 해결을 하려고 생각하다보니 제가 어떤 변수를 만들어서 담고 할 생각을 못했던것 같습니다.
  5. 이번의 경우에는 단순히 따로 인덱스를 0으로 놓고 하나의 문자가 지나갈때마다 카운트하고.
  6. 만약 공백을 만나면 공백을 문자열에 추가하고 인덱스를 0으로 만드는 방법을 사용하면 간단한걸 알았습니다.
  7. map으로 해볼려니 너무 어려워서 검색을통해 참고 했습니다 

'IOS > Swift Algorithm Level 1' 카테고리의 다른 글

Swift. 자연수 뒤집어 배열로 만들기  (0) 2020.10.23
Swift. 자릿수 더하기  (0) 2020.10.22
Swift. 약수의 합  (0) 2020.10.20
Swift. 시저 암호  (0) 2020.10.19
Swift. 문자열을 정수로 바꾸기  (0) 2020.10.18