-
728x90
class Solution { fun solution(want: Array<String>, number: IntArray, discount: Array<String>): Int { var answer: Int = 0 var checkList = mutableListOf<String>() for(i in 0 .. discount.size-10){ for(j in i .. i+9){ checkList.add(discount[j]) } var check : Boolean = true for(j in 0 .. want.size-1){ if(checkList.count{e -> e == want[j]} < number[j]){ check = false break } } if(check == true){ answer++ } checkList.clear() } return answer } }
해당 문제는 단순히 discount 를 처음부터 끝까지 탐색하여 조건에 맞는지 확인하는 문제였기에 평소보다 for문을 많이 사용하였던것 같습니다. 코드를 작성하면서 최소한 시간을 줄여보고자 break문을 사용하긴 하였지만, 사용하지 않았을 때와 차이는 어느정도 날까? 라는 생각이 들어 비교를 해보니 확실히 자료양이 많을 수록 break문을 쓸수록 시간이 대폭 줄어드는 것을 확인할 수 있었습니다.
break 문을 사용했을때
테스트 1 〉 통과 (14.24ms, 73.8MB) 테스트 2 〉 통과 (50.28ms, 91.1MB) 테스트 3 〉 통과 (20.56ms, 75.2MB) 테스트 4 〉 통과 (47.16ms, 90.5MB) 테스트 5 〉 통과 (43.86ms, 86.3MB) 테스트 6 〉 통과 (10.89ms, 63.9MB) 테스트 7 〉 통과 (35.67ms, 75.4MB) 테스트 8 〉 통과 (40.09ms, 94.8MB) 테스트 9 〉 통과 (25.56ms, 75.1MB) 테스트 10 〉 통과 (42.06ms, 91MB) 테스트 11 〉 통과 (15.03ms, 75.9MB) 테스트 12 〉 통과 (0.04ms, 61.1MB) break문을 사용하지 않았을 때
테스트 1 〉 통과 (73.05ms, 76.6MB) 테스트 2 〉 통과 (120.77ms, 91.8MB) 테스트 3 〉 통과 (32.89ms, 73.7MB) 테스트 4 〉 통과 (43.59ms, 92.3MB) 테스트 5 〉 통과 (86.34ms, 87MB) 테스트 6 〉 통과 (27.86ms, 66.1MB) 테스트 7 〉 통과 (61.35ms, 78.2MB) 테스트 8 〉 통과 (90.11ms, 94.6MB) 테스트 9 〉 통과 (37.98ms, 75MB) 테스트 10 〉 통과 (90.35ms, 91MB) 테스트 11 〉 통과 (15.37ms, 76.6MB) 테스트 12 〉 통과 (0.06ms, 61.7MB) '프로그래머스' 카테고리의 다른 글
크기가 작은 부분 문자열 (0) 2022.12.22 귤 고르기 (0) 2022.12.21 [프로그래머스][Kotlin]가장 가까운 같은 글자 (0) 2022.12.12 문자열 나누기 (0) 2022.12.07 이중우선순위큐 (0) 2022.11.30