728x90
반응형
🔶코딩테스트
🔶Database
≣ 목차
/ 오늘의 TIL /
코딩테스트
https://school.programmers.co.kr/learn/courses/30/lessons/87390#
* 기록
더보기
* 정답
public static int[] solution(int n, long left, long right) {
List<Long> arr = new ArrayList<>();
for (long i = left; i < right + 1; i++) {
arr.add(Math.max(i/n, i%n) + 1);
}
return arr.stream().mapToInt(Long::intValue).toArray();
}
* 오답
[초기 접근 방법]
left로 시작하는 인덱스는 [left/n][left%n], right로 끝나는 인덱스는 [right/n][right%n]이어서 해당 인덱스의 값을 모두 더해서 int 배열로 반환하는 것을 목표로 두었다.
결과는 정확성 45%로 일부는 맞았지만 나머지는 '메모리 초과' 표시됨.
* 회고
인덱스가 몫과 나머지로 구분되는 것까지 접근한 것은 좋았으나, 값을 찾을 때 각 행과 열의 max값 + 1인 것을 찾지 못해서 번잡하게 코드를 작성했다.
역시 코테는 문제를 많이 풀고 패턴을 찾는 연습을 해야겠다.
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static int[] solution(int n, long left, long right) {
long[][] matrix = new long[n][n];
//초기 값 세팅
matrix[0][0] = 1;
for (int i = 1; i < n; i++) {
matrix[i][i] = i+1;
for (int j = 0; j < i; j++) {
matrix[i][j] = i+1; //행 모두 채우기
matrix[j][i] = i+1; //열 모두 채우기
}
}
List<Long> arr = new ArrayList<>();
int dl = (int) (left / n);
int rl = (int) (left % n);
int dr = (int) (right / n);
int rr = (int) (right % n);
//시작 행 모두 add
for (int i = rl; i < n; i++) {
arr.add(matrix[dl][i]);
}
//~마지막 행 전까지 모두 add
for (int i = dl + 1; i < dr; i++) {
for (int j = 0; j < n; j++) {
arr.add(matrix[i][j]);
}
}
//~마지막 행까지 모두 add
for (int i = 0; i <= rr; i++) {
arr.add(matrix[dr][i]);
}
return arr.stream().mapToInt(Long::intValue).toArray();
}
public static void main(String[] args) {
solution(3, 2, 5);
}
}
Database
CPU(연산) <-> RAM(메모리, 단기 기억장치) <-> DISK(장기 기억장치)
서버를 띄워서 API를 동작하면 RAM에 데이터가 저장되고, RAM은 휘발성 데이터기 때문에 서버를 재시작하면 데이터가 없어진다.
데이터베이스: 데이터를 구조화해서 저장한다.
RDB: 데이터를 표처럼 구조화해서 저장한다.
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
[240529] 직접 해봐야 안다 (0) | 2024.05.29 |
---|---|
[240528] 백문이 불여일타! (0) | 2024.05.28 |
[240526] API 개발하기 (0) | 2024.05.26 |
[240524] 수학 지식을 넓히자 (0) | 2024.05.24 |
[240523] 배워도 배워도 끝이 없네 (0) | 2024.05.23 |
댓글