문제
- 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
내 생각
제한사항의 단어별로 홀/짝수 인덱스를 잘 봐야한다.
isDigit()는 아닌것같아서 스페이스 구분을 몰라서 찾아봤다.
split과 joinToString()을 찾게 되었다.
풀이
//코드를 참고하였다.
class Solution {
fun solution(s: String): String =
s.split(" ").joinToString(" ") {
it.mapIndexed { index, c ->
if (index % 2 == 0) c.uppercaseChar() else c.lowercaseChar()
}.joinToString ("")
}
}
알게된 점
.split()
- 문자열을 특정 문자를 기준으로 자를 때 사용한다.
- 인자로 기준이 되는 문자열을 넣어주고 'limit'이라는 인자를 통해 기준이 되는 문자를 통해 몇 개의 인덱스를 생성할지 정할 수 있다.
//예시 코드
val words = "ab/cd/ef"
val wordsBit = word.split("/")
println(wordsBit)
//출력 [ab,cd,ef]
joinToString()
- 리스트의 원소들을 연결한 하나의 문자열로 만들고 싶은 경우 사용
- 종류
- separator : 원소간 연결 시 사이의 들어갈 문자열
- prefix : 만들 문자열에서 시작할 문자열
- postfix : 만들 문자열에서 종료할 문자열
- limit : 개수 제한
- 종류
//예시코드
fun main() {
val intArr = listOf(2,1,4,5,6)
println(intArr.joinToString()) //21456
println(intArr.joinToString("-")) //2-1-4-5-6
println(intArr.joinToString( "-","~","~")) //~2-1-4-5-6~
println(intArr.joinToString(prefix = "<", separator = "-", postfix = ">")) //<2-1-4-5-6>
val move = intArr.map {it +1 } //문자열의 경우 한칸 씩 이동
println(move) //[3, 2, 5, 6, 7]
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Kotlin] 크기가 작은 부분 문자열 (1) | 2024.02.01 |
---|---|
[프로그래머스_Kotlin] 삼총사 (0) | 2024.02.01 |
[프로그래머스_Kotlin] 3진법 뒤집기 (1) | 2024.01.31 |
[프로그래머스_Kotlin] 최대공약수와 최대공배수 (0) | 2024.01.31 |
[프로그래머스_Kotlin] 직사각형 별찍기 (1) | 2024.01.31 |