728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | X |
본인의 실력으로 풀었는가? | X |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
int row, col;
Deque<Integer> side1, side2;
Deque<Deque<Integer>> inside;
public int[][] solution(int[][] rc, String[] operations) {
row = rc.length;
col = rc[0].length;
int[][] answer = new int[row][col];
side1 = new LinkedList<>();
side2 = new LinkedList<>();
inside = new LinkedList<>();
for (int i = 0; i < row; i++) {
inside.addLast(new LinkedList<>());
for (int j = 0; j < col; j++) {
if (j == 0) side1.addLast(rc[i][j]);
else if (j == col-1) side2.addLast(rc[i][j]);
else inside.peekLast().addLast(rc[i][j]);
}
}
for (int i = 0; i < operations.length; i++) {
if (operations[i].equals("Rotate")) {
rotate();
} else {
shiftRow();
}
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (j == 0) answer[i][j] = side1.removeFirst();
else if (j == col-1) answer[i][j] = side2.removeFirst();
else answer[i][j] = inside.peekFirst().removeFirst();
}
inside.removeFirst();
}
return answer;
}
public void shiftRow() {
side1.addFirst(side1.removeLast());
side2.addFirst(side2.removeLast());
inside.addFirst(inside.removeLast());
}
public void rotate() {
inside.peekFirst().addFirst(side1.removeFirst());
side2.addFirst(inside.peekFirst().removeLast());
inside.peekLast().addLast(side2.removeLast());
side1.addLast(inside.peekLast().removeFirst());
}
}
참고 링크
[프로그래머스,Java] Level4: 행렬과 연산
https://school.programmers.co.kr/learn/courses/30/lessons/118670 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘..
taehoung0102.tistory.com
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프론트엔드/과제테스트] 쇼핑몰 SPA 기출 문제 해설 총 정리 (0) | 2022.08.24 |
---|---|
[프론트엔드/과제테스트] 고양이 사진첩 애플리케이션 기출 문제 해설 총 정리 (0) | 2022.08.18 |
[JavaScript] 프로그래머스 - 단어 변환 (3단계) (0) | 2022.08.04 |
[Java] 프로그래머스 - 단어 변환 (3단계) (0) | 2022.08.01 |
[Java] 프로그래머스 - 사칙연산 (4단계) (0) | 2022.08.01 |