ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스][Kotlin] 카드 뭉치
    프로그래머스 2023. 2. 17. 14:52
    728x90
    class Solution {
        fun solution(cards1: Array<String>, cards2: Array<String>, goal: Array<String>): String {
            var answer = "Yes"
            var idx1 = 0
            var idx2 = 0
            goal.forEach { 
                if(idx1 < cards1.size && cards1[idx1] == it){
                    idx1++
                } else if(idx2 < cards2.size && cards2[idx2] == it){
                    idx2++
                } else {
                    return "No"
                }
            }
            return answer
        }
    }

    상기 코드로 바로 통과한것은 아니지만 통과한 코드가 맘에 들지 않아 다시 작성하였습니다.

    처음에는 작성했었던 코드는 cards1과 cards2 를 mutableList로 만든 뒤 goal 과 일치한다면 삭제하는 방식으로 작성하였었으나 굳이 삭제를 하지 않고 조회하는 인덱스만 수정하면 될 것 같다는 생각이 들어 다시 작성하였었습니다.

    그렇게 해보니 작업량이 줄어 실행시간도 매우 단축됨을 알 수 있었습니다.

     

    상기코드의 실행 결과 입니다.

    테스트 1 통과 (0.03ms, 61.5MB)
    테스트 2 통과 (0.02ms, 62.2MB)
    테스트 3 통과 (0.02ms, 62.1MB)
    테스트 4 통과 (0.02ms, 61.5MB)
    테스트 5 통과 (0.02ms, 59.7MB)
    테스트 6 통과 (0.04ms, 61.3MB)
    테스트 7 통과 (0.02ms, 62.3MB)
    테스트 8 통과 (0.02ms, 60.9MB)
    테스트 9 통과 (0.01ms, 61MB)
    테스트 10 통과 (0.04ms, 62.5MB)
    테스트 11 통과 (0.03ms, 61.1MB)
    테스트 12 통과 (0.02ms, 61.7MB)
    테스트 13 통과 (0.03ms, 58.3MB)
    테스트 14 통과 (0.02ms, 59.7MB)
    테스트 15 통과 (0.03ms, 62.2MB)
    테스트 16 통과 (0.04ms, 63.3MB)
    테스트 17 통과 (0.03ms, 57.9MB)
    테스트 18 통과 (0.02ms, 60.5MB)
    테스트 19 통과 (0.02ms, 60.7MB)
    테스트 20 통과 (0.02ms, 61.8MB)
    테스트 21 통과 (0.03ms, 59.1MB)
    테스트 22 통과 (0.03ms, 61.9MB)
    테스트 23 통과 (0.02ms, 60.5MB)
    테스트 24 통과 (0.02ms, 60.7MB)
    테스트 25 통과 (0.02ms, 61.7MB)

    처음에 작성(mutableList 및 removeFirst를 이용)  했었던 코드의 실행시간 입니다.

    테스트 1 통과 (25.09ms, 63.6MB)
    테스트 2 통과 (19.80ms, 63.6MB)
    테스트 3 통과 (19.30ms, 62.9MB)
    테스트 4 통과 (23.22ms, 63.2MB)
    테스트 5 통과 (23.67ms, 63.2MB)
    테스트 6 통과 (27.08ms, 63.4MB)
    테스트 7 통과 (22.11ms, 64MB)
    테스트 8 통과 (22.61ms, 63.4MB)
    테스트 9 통과 (36.98ms, 63.3MB)
    테스트 10 통과 (29.90ms, 62.9MB)
    테스트 11 통과 (27.57ms, 62.7MB)
    테스트 12 통과 (27.81ms, 61.1MB)
    테스트 13 통과 (35.42ms, 63.3MB)
    테스트 14 통과 (21.78ms, 61.9MB)
    테스트 15 통과 (37.99ms, 62.7MB)
    테스트 16 통과 (27.40ms, 62.3MB)
    테스트 17 통과 (19.75ms, 63MB)
    테스트 18 통과 (27.81ms, 63.2MB)
    테스트 19 통과 (25.23ms, 62.9MB)
    테스트 20 통과 (30.22ms, 62.9MB)
    테스트 21 통과 (22.61ms, 63.5MB)
    테스트 22 통과 (29.19ms, 63.1MB)
    테스트 23 통과 (30.99ms, 63.3MB)
    테스트 24 통과 (28.25ms, 63.1MB)
    테스트 25 통과 (30.17ms, 62.4MB)

    불필요한 작업때문에 시간이 급격하게 늘어난 것을 확인 할 수 있습니다.

Designed by Tistory.