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
- 생활코딩 데이터베이스
- 생활코딩 머신러닝야학
- reshape
- flatten
- MySQL
- 생활코딩
- CNN
- 데이터베이스
- 개발자
- 데이터베이스 개론
- Java
- 머신러닝야학
- JavaScript
- 머신러닝(딥러닝)
- 이것이 자바다
- 야학
- 파이썬
- 데이터베이서
- Database
- pandas
- 카카오클라우드스쿨2기
- 판다스
- tensorflow
- LeNet
- Python
- 머신러닝
- 연산자
- 딥러닝
Archives
- Today
- Total
IT's 우
[java] 프로그래머스 - n^2 배열 자르기 본문
728x90
📖 풀이한 문제
💡 문제에서 사용된 알고리즘
- 수학
📜 코드 설명
- left와 right의 인덱스에 해당하는 값을 넣을 배열
// 답 배열 (left ~ right)
int[] answer = new int[(int)(right - left + 1)];
- answerIdx : answer에 해당하는 인덱스
- left와 right의 위치 (이때 left와 right가 long 타입인 점을 유의하여야 한다.)
// left와 right의 2차원 배열에서 위치
int left_r = (int)(left / n);
int left_c = (int)(left % n);
int right_r = (int)(right / n);
int right_c = (int)(right % n);
- 2차원 배열의 값은 행과 열 중 큰 수 + 1인 것을 알 수 있다.
- 이중포문으로 answer에 값을 넣어준다. 첫번째 for문은 행, 두 번째 for문은 열에 해당한다.
- 여기서 유의할 점은
- 행의 시작은 left_r~reight_r까지이고
- 열의 시작은 행이 left_r일 경우에는 left_c부터 해주고 아닌 경우에는 0부터 두 번째 for문 탐색을 시작한다. 또한 행이 right_r이고 열이 right_c이면 right까지 찾아주었으므로 반복문을 종료한다. (시간초과를 위해)
📜 코드
class Solution {
public int[] solution(int n, long left, long right) {
// 답 배열 (left ~ right)
int[] answer = new int[(int)(right - left + 1)];
// left~right 배열(answer)에 해당하는 인덱스
int answerIdx = 0;
// left와 right의 2차원 배열에서 위치
int left_r = (int)(left / n);
int left_c = (int)(left % n);
int right_r = (int)(right / n);
int right_c = (int)(right % n);
// 2차원 배열의 값은 행과 열 중 큰 수 + 1
// 첫번째 반복문은 행, 두번째 반복문은 열
// (첫번째 반복문)행의 시작은 left의 행 시작부터
for (int i = left_r; i <= right_r; i++) {
// (두번째 반복문)열은 행의 시작일 경우는 left_c부터 시작하고 아니면 0부터
int start_c = i == left_r ? left_c : 0;
for (int j = start_c; j < n; j++) {
answer[answerIdx++] = Math.max(i, j) + 1;
// 열과 행이 right의 위치일 경우 반복문 종료
if (i == right_r && j == right_c) break;
}
}
return answer;
}
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[java] 프로그래머스 - n진수 게임 (0) | 2023.08.23 |
---|---|
[java] 프로그래머스 - 압축 (0) | 2023.08.18 |
[java] 프로그래머스 - k진수에서 소수 개수 구하기 (2) | 2023.08.09 |
[java] 프로그래머스 - 숫자의 표현 (0) | 2023.08.08 |
[java] 프로그래머스 - 짝지어 해결하기 (0) | 2023.08.01 |