Kotlin 문법 및 연습 문제

(Kotlin) - 이상한 문자 만들기

돗개진 2024. 3. 15. 20:06

프로그래머스 - 이상한 문자 만들기 (Kotlin)

 

처음에 이 문제를 이해한 방식은 인덱스를 정수로 가져와서 2로 나누었을 때 나누어 떨어지지 않으면 홀수로 판단하고 대문자로 출력하게끔 코드를 짰다.

 

class Solution {
    fun solution(s: String): String {
        var answer = ""
        val chars = s.split(" ")
        
        for(i in chars) {
            var change = ""
            for(j in i.indices) {
                change += if (j % 2 == 0) i[j].toUpperCase()
                else i[j].toLowerCase()
            }
            answer += "$change "
        }
        return answer.trim()
    }
}

ㄴ> 위와 같은 방식으로 테스트 케이스를 돌렸을 때 실패인 경우가 절반 정도 뜨길래 문제를 다시 읽어 보았다.

 

문제를 다시 보고 입출력 결과를 보니 공백을 포함한 인덱스가 아니라 공백을 기준으로 문자가 있는 부분만 따져서 홀수 번째를 대문자로 바꿔야 하는 것이었다.

 

class Solution {
    fun solution(s: String): String {
        var answer = ""
        
         var even = true
        
        for (char in s) {
            if (char != ' ') {
                answer += if (even) char.toUpperCase() else char.toLowerCase()
                even = !even
            } else {
                answer += ' '
                even = true
            }
        }
        return answer
    }
}

ㄴ> 따라서 코드를 공백이 아닐 때를 조건으로 어차피 첫 글자는 홀수로 시작하니까 첫 번째 글자를 대문자로 바꾼다 (even이 true일 때) 그 후에는 even을 false로 다시 초기화하고 even이 false일 때는 소문자로 바꾼다~ 를 반복

 

문제를 풀 때 가장 처음으로 떠오르는 방법은 가장 쉬운 방법인 것 같다. 이 방법으로 정답을 찾든 못 찾든 더 좋게 더 빠르게 풀어 보려고 계속 고민하고 머리를 굴려야 좋은 개발자가 될 수 있을 것 같다고 느껴지는 문제였다.

 


[ 사용된 Kotlin 메소드 ]

 

- split(" ")

: 공백을 기준으로 문자열을 분리하는 것인데 공백이 아니라 다른 것을 입력하면 다른 것을 기준으로 분리할 수 있다.

 

- toUppercase()

: 문자를 대문자로 바꾸는 메소드이다.

 

- toLowerCase()

: 문자를 소문자로 바꾸는 메소드이다.