[A&I Code Camp] Day5 (isdigit)

Hood·2024년 9월 12일

A&I Code Camp

목록 보기
5/38
post-thumbnail

✍   Kotlin을 사용한 프로그래머스 Lv. 0 문제 풀기

소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는 kotlin을 기반으로 작성합니다.


피자 나눠 먹기 (1)

피자를 나눠 먹는데 혼자서도 한판이 필요하다
그렇기에 7로 나누는데 나머지가 나오더라도 다 올려줘야 한다.
그래서 math.ceil을 가져와서 풀어주었다.

import kotlin.math.ceil

class Solution {
    fun solution(n: Int): Int = ceil(n.toDouble() / 7).toInt()
}

옷가게 할인 받기

이 문제는 좀 내가 범위를 잘못 생각한 감이 많다.
그래서 숫자가 더러워 졌지만 똑같이 when문을 사용해서도 풀 수 있다.

class Solution {
    fun solution(price: Int): Int {
        var answer: Double = 0.0
        if (price in 0 .. 99999){
            answer += price
        }else if(price in 100000 .. 299999) {
            answer = price * 0.95
        } else if (price in 300000 .. 499999){
            answer = price * 0.9
        } else {
            answer = price * 0.8
        }
        return answer.toInt()
    }
}
//모범 답
class Solution {
    fun solution(price: Int): Int {
        val discount =  when {
            price >= 500_000 -> 0.80
            price >= 300_000 -> 0.90
            price >= 100_000 -> 0.95
            else -> 1.0
        }
        return (discount * price.toDouble()).toInt()
    }
}

아이스 아메리카노

이 문제는 아메리카노의 잔 수와 거스름돈을 구해야 하는데
말 그대로 구한 값을 출력 방식에 따라 배열에 넣었다.
그런데 여기서 거스름돈은 % 을 통해서도 구할 수 있다.

class Solution {
    fun solution(money: Int): IntArray {
        val n : Int = money / 5500
        val m : Int = money - (5500 * n)
        return intArrayOf(n, m)
    }
}

개미 군단

이 문제는 개미들의 공격력에 따른 효율적인 개미 배치를 구하는 공식이다.
말 그대로 차례로 필요한 개미 갯수를 구한 뒤 다 더해주었다.

class Solution {
    fun solution(hp : Int) : Int{
        val a = hp / 5
        val b = (hp-(5*a))/3
        val c = (hp-(5*a)-(3*b))/1
        return a+b+c
    }
}

숨어있는 숫자의 덧셈 (1)

이 문제는 다양한 풀이가 있는데 필자는 문자열 안에서 1부터 9까지를 찾아서 풀었다.

class Solution {
    fun solution(my_string: String): Int {
        var answer : Int = 0
        for (x in my_string.indices){
            if(my_string[x] in '1'..'9'){
                answer += my_string[x].toString().toInt()
            }
        }
        return answer
    }
}

모범 답의 isDigit()는 문자열이 숫자인지 판별하는 함수이다.
이것을 사용해서 문자열이 숫자인 것만 뽑아 map을 만들어주고 그것을 하니씩 문자형 -> 정수형으로 바꿔주고
그것을 모두 더하는 sum() 통해 구할 수 있었던 풀이다.

//모범 답
class Solution {
    fun solution(my_string: String)= my_string.filter{ it.isDigit() }.map{ it.toString().toInt() }.sum()
}

📌결론

내가 모르는 내장함수가 아직 많은 것 같다.
isdigit(), isalpha() 를 잘 기억해두자.

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글