본문 바로가기
프로그래머스 Algorithm

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

by Echung 2023. 12. 5.

안녕하세요. 이번에는 프로그래머스 이상한 문자 만들기 문제를 풀어보려고 합니다.

 

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

 

프로그래머스

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

programmers.co.kr


Problem

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

 

[제한 사항]

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

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

사진 1. 입출력 예

Solution

class Solution {
    fun solution(s: String): String {
        var answer: String = ""
        
        var list = s.split(" ")
        for(i in 0..list.size - 1) {
            list[i].mapIndexed { index, c -> if(index % 2 == 0) answer += c.uppercase() else answer += c.lowercase() } 
            
            if(i != list.size - 1) {
                answer += " "    
            }
            
        }
        
        return answer
    }
}

 이번 문제는 공백을 기준으로 짝/홀수 인덱스를 판단해야 되는 이유로 split을 이용해서 공백을 기준으로 나누고 mapIndexed를 사용해서 짝수는 uppercase()로 대문자 홀수는 lowercase()로 소문자를 나타내도록 문제를 풀어보았습니다.

 

1. 다른 사람 코드

class Solution {
    fun solution(s: String): String {
        return s.split(" ").joinToString(" ") { word ->
            word.mapIndexed { index, char -> 
                    if (index % 2 == 0) char.toUpperCase() else char.toLowerCase()
                }
                .joinToString("")
        }
    }
}

 저의 코드와 다르게 좀 더 나은 코드가 있는지 학습을 하기 위해서 다른 사람 코드를 가져와보았습니다. 저의 코드와 크게 다르진 않지만 list 원소들을 문자열로 만들어주는 joinToString() 함수를 통해서 문제를 접근하였습니다. for문을 사용 안 해서 좀 더 가독성이 좋아지는 코드 같습니다. 


Performance

1. 내가 작성한 코드 2. 다른 사람 코드

 

반응형