이상한 문자 만들기 (Lv1. Swift)

Updated:

이상한 문자 만들기 (Lv1. Swift)

🔍 문제

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

🔶 제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.

  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

🔹 입력 형식

입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.

  • 1 ≦ n ≦ 16

  • arr1, arr2는 길이 n인 정수 배열로 주어진다.

  • 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2n - 1을 만족한다.

🔹 입출력 예

image

🔹 입출력 예 설명

“try hello world”는 세 단어 “try”, “hello”, “world”로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 “TrY”, “HeLlO”, “WoRlD”입니다. 따라서 “TrY HeLlO WoRlD” 를 리턴합니다.


📌 풀이

입력받은 문자를 하나씩 검사하여 문제의 요구대로 공백, 짝수번째 글자, 홀수번째 글자 나누어 처리하면 된다.

여기서 주의할 점은 제한사항에 나와있듯이 “문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단” 해야 한다는 부분이다. 공백을 기준으로 문자열의 index를 판단하도록 하면 된다.

여서는 count 라는 변수를 이용해서 문자의 index 를 세워주었는데 공백인 경우 이 count 에 들어있는 값을 reset 해주기 휘해 -1 이라는 값을 넣어 주었다. 반복문이 돌 때마다 매번 count 는 +1 이 되므로 공백 후 첫 글자의 index 는 0이 된다

// 일반적인 반복문 돌려서 풀이법

func solution(_ s:String) -> String {
	var count = 0
	var result = ""

	for letter in s {
		if letter == " " {
			count = -1
			result += String(letter)
		} else if count % 2 == 0 {
			result += letter.uppercased()
		} else {
			result += letter.lowercased()
		}
		count += 1
	}

	return result
}

print(solution("try hello world")) // TrY HeLlO WoRlD

Reference

프로그래머스 - https://programmers.co.kr/learn/courses/30/lessons/17681

Categories:

Updated:

Leave a comment