728x90
반응형
안녕하세요. delay100 입니다.
미들러 문제. 행렬 테두리 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/77485
만약 제출 시 테스트케이스 3번부터 쭉 실패가 뜬다면, 맨 처음 list를 만들 때를 주의해야합니다!
아래의 실패 코드처럼 작성하진 않았는지 확인이 필요합니다.
// 1. list에 값 채워넣기
// 실패 코드
// rows < columns가 되면 list에 값이 이상해집니다.
for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++) {
list[i][j] = i*rows + (j+1);
}
}
// 성공 코드
int count = 1;
for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++) {
list[i][j] = count;
count++;
}
}
그리고 코드 자체는 특별한 알고리즘을 사용하지 않았고,
list의 특정 범위를 순환하며 위, 왼쪽, 아래쪽, 오른쪽으로 이동하는 방법을 사용했습니다.
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] list = new int[rows][columns];
int count = 1;
// 1. list에 값 채워넣기
for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++) {
list[i][j] = count;
count++;
}
}
for(int i=0; i<queries.length; i++) {
int a = queries[i][0] - 1;
int b = queries[i][1] - 1;
int c = queries[i][2] - 1;
int d = queries[i][3] - 1;
int leftTop = list[a][b];
int min = leftTop;
// 2. 값 이동
// 2-1. 위쪽으로 이동
for(int j=a; j<c; j++) {
list[j][b] = list[j+1][b];
min = Math.min(min, list[j][b]);
}
// 2-2. 왼쪽으로 이동
for(int j=b; j<d; j++) {
list[c][j] = list[c][j+1];
min = Math.min(min, list[c][j]);
}
// 2-3. 아래쪽으로 이동
for(int j=c-1; j>=a; j--) {
list[j+1][d] = list[j][d];
min = Math.min(min, list[j+1][d]);
}
// 2-4. 오른쪽으로 이동
for(int j=d-1; j>=b; j--) {
list[a][j+1] = list[a][j];
min = Math.min(min, list[a][j+1]);
}
// 3. 저장해두었던 임시 값 넣기
list[a][b+1] = leftTop;
answer[i] = min;
}
return answer;
}
}
+ 비기너 문제
정수 내림차순으로 배치하기 (https://school.programmers.co.kr/learn/courses/30/lessons/12933)
+ 챌린저 문제
두 원 사이의 정수 쌍 (https://school.programmers.co.kr/learn/courses/30/lessons/181187)
감사합니다. 피드백 환영합니다.
728x90
반응형
'항해99 > 99club1기TIL' 카테고리의 다른 글
[99club/TIL] 5주차 - 월요일 TIL(Today I Learned) (1) | 2024.04.22 |
---|---|
[99club/TIL] 4주차 - 일요일 TIL(Today I Learned) (1) | 2024.04.22 |
[99club/TIL] 4주차 - 금요일 TIL(Today I Learned) (1) | 2024.04.19 |
[99club/TIL] 4주차 - 목요일 TIL(Today I Learned) (0) | 2024.04.18 |
[99club/TIL] 4주차 - 수요일 TIL(Today I Learned) (0) | 2024.04.17 |