본문 바로가기
Algorithm/Kotlin

[프로그래머스 • 코틀린] 부족한 금액 계산하기 #82612

by 키윤 2023. 11. 6.

#82612

🎄 Question ?

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

//82612

class Solution {
    fun solution(price: Int, money: Int, count: Int): Long {
        var answer: Long = -1
        return answer
    }
}

🧩 Thought Process

  1. use the for loop to find the summation of all the n times of rides.  repeat count times!
    for 문을 이용해서 총 가격 찾기
  2. Then subtract the sum by the money and return that as an answer
    총 합계에서 money를 빼주고 그 값을 answer로 리턴하기
  3. Right before returning the answer, check the if the answer is negative using the if clause. If so, return -1.
    answer 리턴 하기 직전에 if 문을 이용하여 answer이 음수인지 확인하고 음수이면 -1 리턴하기
class Solution {
    fun solution(price: Int, money: Int, count: Int): Long {
        var answer: Long = -1
        var sum: Int = 0
        for (i in 0 until count) {
            sum += price*(i+1)
        }
        if (sum-money >= 0) {
            answer = (sum-money).toLong()
        } else {
            answer = 0
        }
        return answer
    }
}

이렇게 적었는데 틀렸다고 한다...

정확성 82 퍼센트.. 이럴때가 가장 막막하다.. 어쩌라는거지..:( 모가 문제인걸까... 어떤 테스트를 했는지를 알면 그걸 고치면 되는데.. 그것도 아니라;;

 

혹시나 해서 sum의 자료형을 Long으로 바꾸어주었다. sum이 모든 값을 더한거니까 훨 씬 큰 값을 가질거니까!!

됐다!

행복 짜릿! 무려 11점 짜리 문제였다 :))

🎀 Answer

class Solution {
    fun solution(price: Int, money: Int, count: Int): Long {
        var answer: Long = -1
        var sum: Long = 0
        for (i in 0 until count) {
            sum += price*(i+1)
        }
        if (sum-money >= 0) {
            answer = (sum-money).toLong()
        } else {
            answer = 0
        }
        return answer
    }
}

#2

class Solution {
    fun solution(price: Int, money: Int, count: Int): Long {
        return Math.max(count * (price.toLong() + price * count) / 2L - money, 0)
    }
}
출처: https://yline.tistory.com/87 [Y_LINE's_Repository:티스토리]

다른 풀이 분석: 2L로 나누어줌으로서 Long형을 유지해주었다. max함수를 굳이 사용했어야하나 싶긴 하다... 

🎁 Result

🏆 Comment

Long 자료형을 요구하는 문제는 처음 풀어봤다. 많이 배움:)