📑 세부 학습 내용
📅 스케쥴
- 4시간 30분 독서 + 궁금한 개념 조사 및 학습 + 1시간 코딩테스트 및 풀이 리뷰
- 총 5시간 30분
🧷 학습 시간 인증
📖 도서 정독 및 실습
실전 레디스 : 기초, 실전, 고급 단계별로 배우는 레디스 핵심 가이드
- 캐싱 등
RDB 의 보조 역할을 해줄 NoSQL 중 가장 범용적이고 유지보수가 잘 진행 중인 Redis 의 구조부터 기초, 심화 내용, 사용법 등을 확실하게 이해하여, 이후의 프로그래밍에 있어 자신 있고 근거 있게 레디스를 채택하고 사용할 수 있는 개발자를 목표로 독서 시작
- 3. 고급 기능 (p.204) ~ 3.4.2 모듈을 실제로 사용하는 경우 (p.250)
- 도서 내 모든 내용 이해 및 실습 완료
✏️ 코딩 테스트
⭕ 문제 풀이
class Solution {
static int LIMIT = 10_000_000;
int n;
public int[] solution(long begin, long end) {
n = (int) (end - begin + 1);
int[] dp = new int[n];
for (long i = begin; i <= end; i++) {
dp[(int) (i - begin)] = calculate(i);
}
return dp;
}
private int calculate(long num) {
if (num == 1) {
return 0;
}
int result = 1;
for (long i = 2; i * i <= num; i++) {
if (num % i == 0) {
long gcd = num / i;
if (gcd <= LIMIT) {
return (int) gcd;
}
if (i <= LIMIT) {
result = (int) i;
}
}
}
return result;
}
}
- 풀이 실패
- 효율성 테스트를 통과할만한 아이디어를 떠올리지 못함
- 아이디어는 도움 받아 구현
- 최종 시간복잡도 : O(N x √E)
dp 기록 반복문 : O(N)
- 내부
calculate() 반복문 : O(√E)
- √E는 begin ~ end 의 약수
- 최대 end 값
- 최종 시간복잡도 : O(N x √E)
💡 어려웠던 것 || 알게 된 것