ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스][Kotlin] 덧칠하기
    프로그래머스 2023. 3. 3. 17:01
    728x90

    해당 문제는 보자마자 deque를 이용하여 풀면 될 것 같다는 생각이 들었습니다.

    저의 경우 처음에 생각하지 못했던 케이스때문에 시간이 조금 걸렸었습니다.

    바로 하기와 같은 케이스 였습니다. 비겁한(?) 변명이지만 문제에 있는 예시만 생각하다가 하기와 같은 케이스를 생각하지 못하였었습니다. 즉 중간에 건너 뛰어버리는 칸이 있을 수도 있다는 것을..... 생각하는게 늦었었습니다.

    1 2 3 4 5 6 7 8 9 10
     O O O   O O O     O

     

    그리고 다 작성하고서 생각해보니 BooleanList 혹은 IntArray 등을 이용하여 만들 수도 있겠구나 라고도 생각이 들어 추후 추가 작성할 수 있도록 하겠습니다.

     

    하기는 작성한 코드와 실행 결과 입니다.

    import java.util.ArrayDeque
    class Solution {
        fun solution(n: Int, m: Int, section: IntArray): Int {
            var answer: Int = 0
            var dq1 = ArrayDeque<Int>()
            var dq2 = ArrayDeque<Int>()
            for(i in section.first() .. n){
                dq1.add(i)
            }
            section.forEach {
                dq2.add(it)
            }
    
            while(!dq2.isEmpty()){
                while(dq1.peekFirst() != dq2.peekFirst()){
                    dq1.poll()
                }
                repeat(m){
                    if (dq1.peekFirst() == dq2.peekFirst()){
                        dq1.poll()
                        dq2.poll()
                    } else {
                        dq1.poll()
                    }
                }
                answer++
            }
            return answer
        }
    }
    테스트 1 통과 (27.89ms, 68.9MB)
    테스트 2 통과 (30.29ms, 71.3MB)
    테스트 3 통과 (29.91ms, 68.1MB)
    테스트 4 통과 (36.97ms, 65MB)
    테스트 5 통과 (24.11ms, 67.8MB)
    테스트 6 통과 (21.12ms, 62.7MB)
    테스트 7 통과 (26.44ms, 65.1MB)
    테스트 8 통과 (37.93ms, 66.6MB)
    테스트 9 통과 (14.46ms, 62.1MB)
    테스트 10 통과 (28.65ms, 67.1MB)
    테스트 11 통과 (15.14ms, 63.7MB)
    테스트 12 통과 (25.29ms, 68.1MB)
    테스트 13 통과 (40.51ms, 71MB)
    테스트 14 통과 (25.80ms, 69.2MB)
    테스트 15 통과 (13.77ms, 61.8MB)
    테스트 16 통과 (31.48ms, 67.6MB)
    테스트 17 통과 (38.37ms, 67.8MB)
    테스트 18 통과 (28.99ms, 65.3MB)
    테스트 19 통과 (29.21ms, 68MB)
    테스트 20 통과 (37.56ms, 67.5MB)
    테스트 21 통과 (29.21ms, 68.9MB)
    테스트 22 통과 (36.19ms, 67.8MB)
    테스트 23 통과 (27.10ms, 68.9MB)
    테스트 24 통과 (15.55ms, 63.1MB)
    테스트 25 통과 (55.80ms, 66.6MB)
    테스트 26 통과 (33.74ms, 67MB)
    테스트 27 통과 (45.76ms, 64.3MB)
    테스트 28 통과 (42.13ms, 65.7MB)
    테스트 29 통과 (24.49ms, 62.5MB)
    테스트 30 통과 (20.41ms, 61.9MB)
    테스트 31 통과 (37.04ms, 64.8MB)
    테스트 32 통과 (35.44ms, 64.7MB)
    테스트 33 통과 (25.54ms, 64.7MB)
    테스트 34 통과 (20.99ms, 62.8MB)
    테스트 35 통과 (42.60ms, 68.6MB)
    테스트 36 통과 (26.29ms, 65.6MB)
    테스트 37 통과 (35.14ms, 65.5MB)
    테스트 38 통과 (18.79ms, 62.9MB)
    테스트 39 통과 (36.92ms, 66.9MB)
    테스트 40 통과 (15.07ms, 62.1MB)
    테스트 41 통과 (31.49ms, 69.9MB)
    테스트 42 통과 (13.94ms, 62.6MB)
    테스트 43 통과 (34.44ms, 64.7MB)
    테스트 44 통과 (34.84ms, 65.1MB)
    테스트 45 통과 (33.90ms, 69.5MB)
    테스트 46 통과 (30.47ms, 64.7MB)
    테스트 47 통과 (27.77ms, 70.5MB)
    테스트 48 통과 (26.49ms, 68.2MB)
    테스트 49 통과 (32.94ms, 67.6MB)
    테스트 50 통과 (30.34ms, 71.2MB)
Designed by Tistory.