
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
주말을 제외한 모든 날에 하루 5문제씩
프로그래머스 Lv.0 문제에 대한 풀이입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
피자를 나눠 먹는데 혼자서도 한판이 필요하다
그렇기에 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부터 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()를 잘 기억해두자.