TIL #39

loci·2024년 6월 8일
0

TIL

목록 보기
37/111


JadenCase 문자열 만들기

문자열의 공백다음 단어의 첫문자를 숫자가 아니면 대문자로 만들어 준다.


나의코드

class Solution {
    fun solution(s: String): String {
        var answer = ""
        var sSplit = s.split(" ")
        for(i in sSplit){
            if(i != ""){
                var lower = i.map{it.lowercaseChar()}.joinToString("")
                var isInt = lower[0].toString().toIntOrNull()
                if(isInt == null){
                    answer += lower[0].uppercase() + lower.substring(1) + " "
                }else{
                    answer += lower + " "
                }
            }else{
                answer += " "
            }
        }
        answer = answer.substring(0, answer.length-1)
        return answer
    }
}

trim()으로 마지막에 처리를 해주었었는데 이럴경우 처음이나 끝에 원래 공백이 주어졌을때 틀리게된다. 그래서 substring으로 마지막 공백만 제거해줌


다른사람의 풀이

class Solution {
    fun solution(s: String): String {
        var answer = ""

        for ((index, item) in s.withIndex()) {
            if (index == 0 || s[index - 1].toString() == " ") {
                answer += item.toUpperCase().toString()
            } else {
                answer += item.toLowerCase().toString()
            }
        }

        return answer
    }
}

s의 문자와 Index를 함께 가져와서 첫번째 문자와 공백의 다음 문자를 대문자로 바꾸고 나머지문자를 소문자로 바꿔주는 코드


나누어 떨어지는 숫자배열

divisor와 나누어떨어지는 숫자를 오름차순으로 반환

각요소를 divisor와 나눠서 0이나오면 answer에 추가해주고 정렬해 반환
answer가 비어있다면 -1을 넣어 반환


나의코드

class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        var answer = intArrayOf()
        for(i in arr ){
            if(i % divisor == 0){
                answer += i
            }
        }
        if(answer.isEmpty()){
            answer += -1
        }
        return answer.sorted().toIntArray()
    }
}

다른사람코드

class Solution {
    fun solution(arr: IntArray, divisor: Int): IntArray {
        var answer = intArrayOf()

        arr.forEach { if (it % divisor == 0) answer += it }
        answer.sort()

        if (answer.size == 0) answer += -1

        return answer
    }
}


음양 더하기
sign의 부호에 따라 absolutes의 값을 더하거나 빼준다.


나의풀이

class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray): Int {
        var answer: Int = 0
        for ( i in absolutes.indices){
            if(signs[i]){
                answer += absolutes[i]
            } else{
                answer -= absolutes[i]
            }
        }
        return answer
    }
}

다른사람의 풀이

class Solution {
    fun solution(absolutes: IntArray, signs: BooleanArray) =
        absolutes.foldIndexed(0) { idx, acc, num -> acc + if (signs[idx]) num else -num }
}


핸드폰번호 가리기
뒤에서 4번째 자리까지 문자"*"로 변환하고 나머지숫자는 그대로 출력


나의코드

class Solution {
    fun solution(phone_number: String): String {
        var result = phone_number.substring(phone_number.length-4)
        return "${"*".repeat(phone_number.substring(0, phone_number.length-4).length)}${result}"
    }
}

다른사람의 코드

class Solution {
    fun solution(phone_number: String): String {
        var answer = ""
        for((i, c) in phone_number.withIndex()) {
            if(phone_number.length - 4 <= i) {
                answer += c
            } else {
                answer += '*'
            }
        }
        return answer
    }
}
profile
편리한 개발자

0개의 댓글