-
[프로그래머스][Kotlin] 롤케이크 자르기프로그래머스 2023. 2. 20. 12:57728x90
코드 기재에 앞서 간단한 아이디어에 대한 설명을 하겠습니다.
자세한 내용은 https://school.programmers.co.kr/learn/courses/30/lessons/132265 에서 확인하시면 좋으실거 같습니다.
topping
1 2 1 3 1 형이 1조각 먹을때
형이 먹을거
1 동생이 먹을거
2 1 3 1 형의 토핑 종류 = 1
동생의 토핑 종류 = 3
topping
1 2 1 3 1 형이 2조각 먹을때
형이 먹을거
1 2 동생이 먹을거
1 3 1 형의 토핑 종류 = 2
동생의 토핑 종류 = 2
상기 2개를 봤을 때 이런 생각을 가질 수 있습니다.
형의 토핑 종류는 형이 i 개를 먹는다고 했을때 topping[0]~topping[i-1]까지 중복된 것을 제외한 갯수 이며,
동생또한 형이 i 개를 먹는다고 했을때 topping[i]~topping[topping.size-1] 까지 중복된 것을 제외한 갯수 입니다.
그렇다면 형이 i 개를 먹을때 중복된것을 제외한 갯수와 그때 동생이 먹는 것에 중복된 것을 제외 한 갯수를 배열로 만들어
저장 해놓는 다면 추후 형의 형이 i개를 먹었을때 형과 동생의 각각 먹은 topping 의 갯수를 알 수 있다는 결론이 나옵니다.
해당 아이디어를 Kotlin으로 작성해보면 아래와 같은 코드로 작성 할 수 있습니다.
class Solution { fun solution(topping: IntArray): Int { var answer: Int = 0 var arr1 = IntArray(topping.size){0} //형의 종류의 수를 저장할 배열 var arr2 = IntArray(topping.size){0} //동생의 종류의 수를 저장할 배열 var menuCount = mutableSetOf<Int>() for(i in 0 ..topping.size-1){ // 형이 (i+1)개를 먹었을때의 종류의 수 menuCount.add(topping[i]) arr1[i] = menuCount.size } menuCount.clear() for(i in topping.size-1 downTo 0){ // 형이 (i+1)개를 먹었을때의 동생의 종류의 수 menuCount.add(topping[i]) arr2[i] = menuCount.size } for(i in 0 until topping.size-1){ // 형이 (i+1)개를 먹었을 때 형과 동생의 종류의 수 비교 if(arr1[i] == arr2[i+1]) answer++ } return answer } }
하기는 상기 코드의 실행 결과 입니다.
테스트 1 〉 통과 (4.20ms, 64.7MB) 테스트 2 〉 통과 (20.14ms, 72.7MB) 테스트 3 〉 통과 (13.76ms, 65.9MB) 테스트 4 〉 통과 (13.92ms, 66.7MB) 테스트 5 〉 통과 (57.81ms, 116MB) 테스트 6 〉 통과 (86.86ms, 128MB) 테스트 7 〉 통과 (101.08ms, 128MB) 테스트 8 〉 통과 (88.44ms, 128MB) 테스트 9 〉 통과 (106.69ms, 129MB) 테스트 10 〉 통과 (83.47ms, 128MB) 테스트 11 〉 통과 (13.60ms, 63.1MB) 테스트 12 〉 통과 (6.00ms, 65.8MB) 테스트 13 〉 통과 (109.87ms, 128MB) 테스트 14 〉 통과 (84.28ms, 128MB) 테스트 15 〉 통과 (92.30ms, 128MB) 테스트 16 〉 통과 (101.65ms, 125MB) 테스트 17 〉 통과 (89.63ms, 126MB) 테스트 18 〉 통과 (93.59ms, 128MB) 테스트 19 〉 통과 (105.26ms, 124MB) 테스트 20 〉 통과 (82.37ms, 125MB) '프로그래머스' 카테고리의 다른 글
[프로그래머스][Kotlin]혼자서 하는 틱택토 (0) 2023.02.27 [프로그래머스][Kotlin]대충 만든 자판 (0) 2023.02.26 [프로그래머스][Kotlin] 카드 뭉치 (0) 2023.02.17 [프로그래머스][Kotlin] 억억단을 외우자 (2) 2023.02.16 [프로그래머스][2019 카카오 개발자 겨울 인턴십][Kotlion] 징검다리 건너기 (0) 2023.02.14