프로그래머스

[프로그래머스_Kotlin] 이상한 문자 만들기

내손은개발 🐾 2024. 2. 1. 14:52

 

 

프로그래머스

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

programmers.co.kr

 

문제

  • 문자열 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]
}