메모리: 64.3 MB, 시간: 270.92 ms
코딩테스트 연습 > 2022 KAKAO TECH INTERNSHIP
정확성: 25.0
효율성: 75.0
합계: 100.0 / 100.0
2026년 02월 03일 02:02:46
[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.]
당신은 행렬에 적용할 수 있는 두 가지 연산을 만들었습니다.
i번째 행은 i+1번째 행이 됩니다. (마지막 행은 1번째 행이 됩니다.)
당신은 행렬에 연산을 여러 번 시행하려고 합니다.
행렬의 초기 상태를 담고 있는 2차원 정수 배열 rc, 시행할 연산을 순서대로 담고 있는 문자열 배열 operations가 매개변수로 주어졌을 때, 연산을 차례대로 시행한 후의 행렬 상태를 return 하도록 solution 함수를 완성해주세요.
rc의 행 길이(=행렬의 가로 길이) ≤ 50,000
rc의 모든 행의 길이는 동일합니다.rc의 열 길이(=행렬의 세로 길이) ≤ 50,000
rc의 모든 열의 길이는 동일합니다.rc의 행 길이 x rc의 열 길이 ≤ 100,000rc[i][j] 는 i+1번째 행 j+1번째 열에 있는 원소를 나타냅니다.
rc[i][j] ≤ 1,000,000operations의 길이 ≤ 100,000
operations의 원소는 "ShiftRow" 혹은 "Rotate"입니다.정확성 테스트 케이스 제한 사항
rc의 행 길이(=행렬의 가로 길이) ≤ 1,000
rc의 모든 행의 길이는 동일합니다.rc의 열 길이(=행렬의 세로 길이) ≤ 1,000
rc의 모든 열의 길이는 동일합니다.rc의 행 길이 x rc의 열 길이 ≤ 10,000operations의 길이 ≤ 100효율성 테스트 케이스 제한 사항
| rc | operations | result |
|---|---|---|
| [[1, 2, 3], [4, 5, 6], [7, 8, 9]] | ["Rotate", "ShiftRow"] |
[[8, 9, 6], [4, 1, 2], [7, 5, 3]] |
| [[8, 6, 3], [3, 3, 7], [8, 4, 9]] | ["Rotate", "ShiftRow", "ShiftRow"] |
[[8, 3, 3], [4, 9, 7], [3, 8, 6]] |
| [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] | ["ShiftRow", "Rotate", "ShiftRow", "Rotate"] |
[[1, 6, 7 ,8], [5, 9, 10, 4], [2, 3, 12, 11]] |
입출력 예#1

위 그림은 ”Rotate”와 ”ShiftRow”를 차례대로 실행한 결과입니다.
따라서 [[8, 9, 6], [4, 1, 2], [7, 5, 3]]을 return 해야 합니다.
입출력 예#2

위 그림은 ”Rotate”, ”ShiftRow”, "ShiftRow"를 차례대로 실행한 결과입니다.
따라서 [[8, 3, 3], [4, 9, 7], [3, 8, 6]]을 return 해야 합니다.
입출력 예#3

위 그림은 ”ShiftRow”, ”Rotate”, ”ShiftRow”, ”Rotate”를 차례대로 실행한 결과입니다.
따라서 [[1, 6, 7 ,8], [5, 9, 10, 4], [2, 3, 12, 11]]을 return 해야 합니다.
제한시간 안내
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges