티스토리 뷰

개발/Kotlin

무지의 먹방 라이브

watering 2018. 10. 6. 10:22

2018년 카카오 Blind Recruitment에 출제된 문제다.

https://programmers.co.kr/learn/courses/30/lessons/42891?language=kotlin

class Solution {
      fun solution(food_times: IntArray, k: Long): Int {
          var list = mutableListOf<pair<int,int>>()
          for(i in 1..food_times.size) list.add(Pair(i,food_times[i-1]))
          list.sortBy {it.second}
        
          var size = food_times.size
          var remain = k
          var answer = -1
          var food_time1 = 0
          var food_time2 = 0
        
          var it = list.iterator()
          while(it.hasNext()) {
              food_time2 = it.next().second
              var use = (food_time2.toLong() - food_time1.toLong()) * size.toLong()
              if(use > remain) {
                  var subList = list.drop(food_times.size - size) as MutableList<pair<int,int>>;
                  subList.sortBy {it.first}
                  answer = subList.get((remain%size).toInt()).first
                  break
              }
              remain -= use
              food_time1 = food_time2
              size--
          }
        
          return answer
      }
}

효율성에서 많이 헤맸고 특히 Long형을 Int형으로 cast할 때 처음에는 as 문으로 했으나 Cast Exception이 발생하는 문제가 있었다.
그리고 사용할 시간(변수 use) 계산 시 Long형으로 처리해야 하는데 아래 블로그를 보지 않았다면 해결하지 못했을 듯 하다.

http://blog.naver.com/PostView.nhn?blogId=withham1&logNo=221365222338

'개발 > Kotlin' 카테고리의 다른 글

배열 초기화 선언  (0) 2019.05.07
Comparator 활용 예제  (0) 2019.05.05
MutableMap을 value 기준으로 정렬하기  (0) 2018.10.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함