VesselWheel

이상한 문자 만들기 본문

Coding Test Practice in Swift

이상한 문자 만들기

JasonYang 2024. 2. 19. 09:58

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

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()
}

해석

더보기

1. 문자열이므로 배열을 초기화하고, 임의 값 x 를 0으로 초기화 하여 시작한다.

var arr: [String] = []
var x = 0

 

2. 내가 엊고자하는 배열에 x 번째 문자를 2로 나누었을 때, 나머지가 0이면 짝수, 나머지가 0이 아니면 홀수이므로, 

짝수면 대문자, 홀수면 소문자로 변환하여 배열에 String 값으로 넣어준다. 

for i in s {
        if x % 2 == 0 {
            arr.append(String(i.uppercased()))
        } else {
            arr.append(String(i.lowercased()))
        }

 

3. 문자열에서 순회할때마다(for 문), x 번째 문자는 1개씩 증가하며 반복한다. 

x += 1

 

4. 그리고, 순회중인 문자 i가 공백문자자라면 == s 라는 문자열이 들어가 있지 않다면, x = 0 ==> 첫 시작은 0 즉 짝수번째 알파벳으로 처리하여 대문자(uppercased())로 변환한다. 

        if i == " " {
            x = 0
        }

 

5. String으로 반환되어야 할 값은 배열 arr를 모두 합쳐준다(joined()) 

return arr.joined()