카테고리 없음
[프로그래머스][Kotlin] 호텔 대실
끝까지 처음처럼
2023. 2. 4. 23:39
728x90
class Solution {
fun solution(book_time: Array<Array<String>>): Int {
var answer: Int = 0
var check = mutableListOf<MutableList<Int>>()
val timeSort = book_time.toList().sortedBy{it.first()}
timeSort.forEach{
val start = it.first().split(":")[0].toInt()*60 + it.first().split(":")[1].toInt()
val end = it.last().split(":")[0].toInt()*60 + it.last().split(":")[1].toInt() + 10
val team = mutableListOf(start,end)
if(check.isEmpty()){
check.add(team)
} else {
var addCheck = true
for(i in 0 .. check.size-1){
if(check[i].last() <= start){
addCheck = false
check[i].add(end)
break
}
}
if(addCheck){
check.add(team)
}
}
}
answer = check.size
return answer
}
}
해당문제는 입력받은 book_time 내 시간을 분단위로 만든 뒤 정렬 후 계산하는 방식으로 풀면 될 것 같다는 생각이 문제를보자마자 떠올라 작성하였습니다. 그렇게 빠르게 작성 후 모든 케이스를 통과하고 보니 작성한 코드 내 check를 mutableListOf<ArrayDeque>() 로 선언후 풀면 통과 시간이 더 빨라 질 것 같은 생각이 들어 한번 더 작성해보왔습니다.
import java.util.ArrayDeque
class Solution {
fun solution(book_time: Array<Array<String>>): Int {
var answer: Int = 0
var check = mutableListOf<ArrayDeque<Int>>()
val timeSort = book_time.toList().sortedBy{it.first()}
timeSort.forEach{
val start = it.first().split(":")[0].toInt()*60 + it.first().split(":")[1].toInt()
val end = it.last().split(":")[0].toInt()*60 + it.last().split(":")[1].toInt() + 10
var team = ArrayDeque<Int>()
team.add(start)
team.addLast(end)
if(check.isEmpty()){
check.add(team)
} else {
var addCheck = true
for(i in 0 .. check.size-1){
if(check[i].peekLast() <= start){
addCheck = false
check[i].addLast(end)
break
}
}
if(addCheck){
check.add(team)
}
}
}
answer = check.size
return answer
}
}
큰틀을 바꾸지 않고 작게만 바꿔서 그런 것 일수도 있지만 눈에 띄는 차이는 없었음을 확인할 수 있었습니다.
추후 공부하여 알게된 개념이나 실력이 늘었을 경우 다시 작성할 수 있도록 하겠습니다.
리스트
테스트 1 〉 | 통과 (33.16ms, 65.4MB) |
테스트 2 〉 | 통과 (37.17ms, 65.6MB) |
테스트 3 〉 | 통과 (41.54ms, 67.6MB) |
테스트 4 〉 | 통과 (39.03ms, 67.6MB) |
테스트 5 〉 | 통과 (34.21ms, 64.9MB) |
테스트 6 〉 | 통과 (56.52ms, 67.4MB) |
테스트 7 〉 | 통과 (51.09ms, 68.2MB) |
테스트 8 〉 | 통과 (35.26ms, 66.5MB) |
테스트 9 〉 | 통과 (35.06ms, 65.3MB) |
테스트 10 〉 | 통과 (47.04ms, 68MB) |
테스트 11 〉 | 통과 (50.80ms, 74.3MB) |
테스트 12 〉 | 통과 (61.81ms, 73.4MB) |
테스트 13 〉 | 통과 (30.82ms, 65.4MB) |
테스트 14 〉 | 통과 (40.51ms, 67.4MB) |
테스트 15 〉 | 통과 (44.87ms, 67MB) |
테스트 16 〉 | 통과 (34.80ms, 67.7MB) |
테스트 17 〉 | 통과 (46.87ms, 73.3MB) |
테스트 18 〉 | 통과 (37.86ms, 67.6MB) |
테스트 19 〉 | 통과 (52.90ms, 73.7MB) |
Deque
테스트 1 〉 | 통과 (41.65ms, 64.6MB) |
테스트 2 〉 | 통과 (40.74ms, 65MB) |
테스트 3 〉 | 통과 (47.80ms, 67.3MB) |
테스트 4 〉 | 통과 (58.60ms, 67.9MB) |
테스트 5 〉 | 통과 (28.51ms, 64.3MB) |
테스트 6 〉 | 통과 (46.91ms, 66.6MB) |
테스트 7 〉 | 통과 (49.68ms, 66.6MB) |
테스트 8 〉 | 통과 (37.26ms, 68MB) |
테스트 9 〉 | 통과 (50.41ms, 65.5MB) |
테스트 10 〉 | 통과 (41.80ms, 67.1MB) |
테스트 11 〉 | 통과 (50.49ms, 73.6MB) |
테스트 12 〉 | 통과 (73.76ms, 72.5MB) |
테스트 13 〉 | 통과 (32.60ms, 65.9MB) |
테스트 14 〉 | 통과 (48.01ms, 65.8MB) |
테스트 15 〉 | 통과 (47.45ms, 73.4MB) |
테스트 16 〉 | 통과 (33.41ms, 66.8MB) |
테스트 17 〉 | 통과 (50.76ms, 73MB) |
테스트 18 〉 | 통과 (48.55ms, 67.4MB) |
테스트 19 〉 | 통과 (60.46ms, 73.3MB) |