Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- js 자동완성
- 피보나치 예제
- 피보나치함수 예제
- 홈택스 해외주식 양도세
- 주식 양도세 신고방법
- 재귀 예제
- 해외주식 양도세 신고
- 톰캣 실시간 로그
- git 연동
- 국세청 해외주식 양도세 신고방식
- tomcat log
- 최대공약수 예제
- 한국투자증권 양도세 신고
- katalon 비교
- katalon xpath
- java.sql.SQLSyntaxErrorException
- oracle group by
- javascript 자동완성
- recursion example
- bfs 미로탐색 java
- katalon 사용법
- 한국투자증권 해외주식 양도세
- Katalon Recorder 사용법
- katalon
- katalon 자동화
- 재귀함수 예제
- 해외증권 양도세 한국투자증권
- 피보나치함수
- 테스트 자동화
- CSTS 폭포수 모델
Archives
- Today
- Total
엄지월드
PGM 118670 행렬과 연산 본문
헷갈렸던 점
- 정확성은 맞는데, 효율성에서 시간 초과가 나서 로직 변경이 필요함
- rotate나 shiftRow가 연속으로 있을 때에 +n번을 처리해주면 될 것 같은데, 로직 구현이 까다로워보인다.
package Programmers;
public class PGM_118670 {
public static void main(String[] args) {
int[][] rc = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
String[] operations = {"Rotate", "ShiftRow"};
solution(rc, operations);
rc = new int[][]{
{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}
};
operations = new String[]{"ShiftRow", "Rotate", "ShiftRow", "Rotate"};
solution(rc, operations);
}
public static int[][] solution(int[][] rc, String[] operations) {
int[][] answer = {};
for(int i=0; i<operations.length; i++){
if(operations[i].equals("Rotate")){
rc = rotate(rc);
}else if(operations[i].equals("ShiftRow")){
rc = shiftRow(rc);
}
}
// System.out.println(rc);
answer = rc;
return answer;
}
public static int[][] rotate(int[][] rc){
int[][] change = new int[rc.length][rc[0].length];
if(rc.length != rc[0].length) {
for (int i = 0; i < rc[0].length - 1; i++) {
// 맨위
change[0][i + 1] = rc[0][i];
// 맨 아래
change[rc.length - 1][rc[0].length - 2 - i] = rc[rc.length - 1][rc[0].length - 1 - i];
}
for (int i = 0; i < rc.length - 1; i++) {
// 한칸씩 밑으로 이동
change[i + 1][rc[0].length - 1] = rc[i][rc[0].length - 1];
// 맨 왼쪽 처리
change[rc.length - 2 - i][0] = rc[rc.length - 1 - i][0];
if (i > 0) {
for (int j = 1; j < rc[0].length - 1; j++) {
change[i][j] = rc[i][j];
}
}
}
}else{
for (int i = 0; i < rc.length - 1; i++) {
change[0][i + 1] = rc[0][i];
change[rc.length - 1][rc[0].length - 2 - i] = rc[rc.length - 1][rc[0].length - 1 - i];
change[i + 1][rc[0].length - 1] = rc[i][rc[0].length - 1];
change[rc.length - 2 - i][0] = rc[rc.length - 1 - i][0];
if (i > 0) {
for (int j = 1; j < rc[0].length - 1; j++) {
change[i][j] = rc[i][j];
}
}
}
}
// System.out.println(change);
return change;
}
public static int[][] shiftRow(int[][] rc){
int[][] change = new int[rc.length][rc[0].length];
for (int i = 0; i < rc.length - 1; i++) {
change[i + 1] = rc[i];
}
for (int j = 0; j < rc[0].length; j++) {
change[0][j] = rc[rc.length - 1][j];
}
// System.out.println(change);
return change;
}
}
'알고리즘' 카테고리의 다른 글
Oracle 입양 시각 구하기(1) 59412 (0) | 2022.10.10 |
---|---|
PGM 92335 k진수에서 소수 개수 구하기 (0) | 2022.09.14 |
PGM 118667 두 큐 합 같게 만들기 (0) | 2022.09.13 |
42862 체육복 (1) | 2022.09.11 |
72410 신규 아이디 추천 (0) | 2022.09.09 |
Comments