프로그래머스
신고 결과 받기(해결완료) + 완료 후기
끝까지 처음처럼
2022. 9. 13. 20:15
728x90
class Solution {
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
var answer = IntArray(id_list.size,{0})
val distinctReport = report.sortedBy{it.split(" ")[1]}.toSet()
for(Id in distinctReport){
val singo = Id.split(" ")
if(distinctReport.count{e -> e.split(" ")[1] == singo[1]} >= k){
answer[id_list.indexOf(singo[0])] += 1
}
}
return answer
}
}
해당 문제는 테스트 케이스 및 일부는 통과가 가능하나 저의 실력이 아직 부족하여 전체 케이스의 1/3 이 시간 초과로 나와 해결법을 알게되면 수정할 예정 입니다.... 진짜 처음에는 상기 코드보다 2배 정도는 길었던거 같은데 계속 생각하여 코드 줄이고 선언 줄이고 했지만 여전히 실패해서 다시금 더욱 공부를 해야겠다는 생각을 하게 되는 문제였습니다...
근데 이게 lv1이 맞는지 의문이 가네요.....ㅠㅜ
-----------------------------------------------------------------------------------------------------------------------------------------------------------------해결 후기
class Solution {
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
var answer = IntArray(id_list.size,{0})
var checkMap = mutableMapOf<String,Int>()
id_list.forEach{
checkMap.put(it,0)
}
val reportSet = report.toSet()
reportSet.forEach{
var count = checkMap.getValue(it.split(" ")[1])+1
checkMap.put(it.split(" ")[1], count)
}
reportSet.forEach{
if(checkMap.getValue(it.split(" ")[1]) >= k) {
answer[ id_list.indexOf(it.split(" ")[0]) ] += 1
}
}
return answer
}
}
계속 맘에 걸려서 어떻게든 풀어야겠다는 생각을 하여 거의 3일 동안 생각을 하면서 이런저런 코드를 작성하며, 시도 하였었지만 주요 포인트를 놓치고 있었습니다. 해결 직전까지만해도 id_list 를 집중하여 해결을 하였었는데, 그 이유로는 최대 report 의 길이가 200,000 이기에 report 의 포커스를 맞추면 왠지 똑같이 시간 초과가 날 것 같아 시도를 하지 않았었습니다. 그런데 계속된 시간 초과로 인하여 한번 시도해 볼까? 라는 생각으로 시도 해보았는데, 성공 하여 뭔가 해결하여 속 시원 하긴 하나 뭔가 맘에 들지 않는 해결방법이였던 것 같습니다.ㅠㅜ 그래도 해결완료하여 속은 시원합니다ㅋㅋㅋㅋ