-
[프로그래머스][2022 KAKAO TECH INTERNSHIP][Kotlin] 행렬과 연산프로그래머스 2023. 2. 14. 13:35728x90
import java.util.* class Solution { fun solution(rc: Array<IntArray>, operations: Array<String>): Array<IntArray> { var answer: Array<IntArray> = rc var Left = ArrayDeque<Int>() var Mid = ArrayDeque<ArrayDeque<Int>>() var Right = ArrayDeque<Int>() //데이터 입력 for(i in 0 .. rc.size-1){ var temp = ArrayDeque<Int>() for(j in 0 .. rc[i].size-1){ if(j == 0) Left.add(rc[i][j]) else if(j == rc[i].size-1) Right.add(rc[i][j]) else temp.add(rc[i][j]) } Mid.add(temp) } operations.forEach { if(it == "Rotate"){ Mid.peekFirst().addFirst(Left.pollFirst()); Right.addFirst(Mid.peekFirst().pollLast()); Mid.peekLast().addLast(Right.pollLast()); Left.addLast(Mid.peekLast().pollFirst()); } else { Left.addFirst(Left.pollLast()); Mid.addFirst(Mid.pollLast()); Right.addFirst(Right.pollLast()); } } for(i in 0 .. rc.size-1){ var j = 0 answer[i][0] = Left.pollFirst() j++ var temp = Mid.pollFirst() while(!temp.isEmpty()){ answer[i][j++] = temp.pollFirst() } answer[i][j] = Right.pollFirst() } return answer } }
해당 문제는 Deque를 사용하여 풀 수 있는 문제 였습니다.
저도 처음에는 공부가 부족하여 MutableList를 사용하여 코드를 작성 하였었으나 효율성에서 모두 시간초과가
발생하여 당혹스러웠던 적이 있었습니다.
코드의 주요 포인트는 그림을 빌려 표현하자면 각 행마다 첫번째 값을 Left 가운데 있는 값들을 Mid 끝에 있는 값들을 Right의 Deque 및 Deque<Deque> 로 저장하여 입력되는 operations 의 값에 따라 변형을 시켜 최종 정답을 알아내는 것 입니다.
하기는 상기 코드의 실행 결과 입니다.
테스트 1 〉 통과 (0.10ms, 60.4MB) 테스트 2 〉 통과 (0.71ms, 58.6MB) 테스트 3 〉 통과 (0.50ms, 62.1MB) 테스트 4 〉 통과 (0.57ms, 59.1MB) 테스트 5 〉 통과 (4.06ms, 69.1MB) 테스트 6 〉 통과 (4.98ms, 69.2MB) 테스트 7 〉 통과 (3.64ms, 65.6MB) 테스트 8 〉 통과 (2.56ms, 65.5MB) 테스트 9 〉 통과 (3.18ms, 67.1MB) 테스트 10 〉 통과 (2.97ms, 65.9MB) 효율성 테스트테스트 1 〉 통과 (41.89ms, 101MB) 테스트 2 〉 통과 (43.30ms, 101MB) 테스트 3 〉 통과 (37.90ms, 99.8MB) 테스트 4 〉 통과 (68.75ms, 115MB) 테스트 5 〉 통과 (78.89ms, 113MB) 테스트 6 〉 통과 (71.29ms, 116MB) 테스트 7 〉 통과 (56.81ms, 97.7MB) 테스트 8 〉 통과 (53.35ms, 99.7MB) 테스트 9 〉 통과 (60.69ms, 97.4MB) '프로그래머스' 카테고리의 다른 글
[프로그래머스][Kotlin] 억억단을 외우자 (2) 2023.02.16 [프로그래머스][2019 카카오 개발자 겨울 인턴십][Kotlion] 징검다리 건너기 (0) 2023.02.14 [프로그래머스][Kotlin] 디펜스 게임 (0) 2023.02.13 [프로그래머스][Kotlin] 가장 큰 수 (0) 2023.02.10 [프로그래머스][Kotlin]단어변환 (0) 2023.02.09