ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • n^2 배열 자르기
    프로그래머스 2022. 9. 27. 14:09
    728x90
    class Solution {
        fun solution(n: Int, left: Long, right: Long): IntArray {
            var answer: IntArray = intArrayOf()
            var tempList = mutableListOf<Int>()
            var count = 0L
            for(i in 1 .. n){
                if(count >= left / n.toLong() && count <= right / n.toLong()){
                    for(j in 0 .. i-1){
                        tempList.add(i)
                    }
                    for(k in i+1 .. n){
                     tempList.add(k)
                    }
                }
                count += 1L    
            }
            //println(tempList)
    
            for(i in left % n.toLong() .. left % n.toLong() + (right-left) ){
                answer += tempList[i.toInt()]
            }
    
    
            return answer
        }
    }

    해당문제는 풀면서 런타임 에러가 계속 나와 최대한 스스로 생각했을때 중복되는 반복들을 줄이면서 작성을 하였었습니다. 그리고 런타임에러가 간신히 나오지 않을만큼 줄여 통과를 하였었는데, 프로그래머스의 특성 상 문제를 풀게 될 경우

    다른사람들이 어떻게 통과하였는지 알 수 있어 다른 사람들의 코드를 보니 저처럼 무식하게 통과하신분은 거의 없으셨습니다. 저의 경우 일단은 LEFT의 값과 RIGHT의 값을 따져 tempList 에 넣고 나서 값을 뽑아 오는 형식으로 작성을 하였는데, 다른 분들은 left의 값과 right 의 값을 가지고 규칙을 찾아 작성을 하셨다는 것을 알게 되었습니다. 해당문제는 풀었을때의 만족감 보다는 작성 후 다른사람들의 코드를 보고 깨닫게 된 점이 더욱 많았던 문제였던 것 같습니다.

    코드를 작성하는 사람의 따라서 혹은 사용한 알고리즘 및 정규식 처리에 따라 처리시간이 매우 달라지는 것을 다시금 깨닫게 되었으며, 문제를 풀기에 앞서 최대한 간단하게 풀 수 있는 방법을 더욱 고민하고 생각하게 만드는 문제였습니다.

    '프로그래머스' 카테고리의 다른 글

    H-Index  (0) 2022.09.27
    위장  (0) 2022.09.27
    기능개발  (0) 2022.09.27
    프린터  (0) 2022.09.27
    [프로그래머스][2019 KAKAO BLIND RECRUITMENT][Kotlin]오픈채팅방  (0) 2022.09.26
Designed by Tistory.