📑 세부 학습 내용
📅 스케쥴
- 3시간 독서 및 궁금한 개념 조사 및 학습, 작일 코딩테스트 코드 수정 + 4시간 강의 OT 및 블로그 정리 및 자료조사
- 총 7시간
🧷 학습 시간 인증
📖 도서 정독 및 실습
실전 레디스 : 기초, 실전, 고급 단계별로 배우는 레디스 핵심 가이드
- 캐싱 등
RDB 의 보조 역할을 해줄 NoSQL 중 가장 범용적이고 유지보수가 잘 진행 중인 Redis 의 구조부터 기초, 심화 내용, 사용법 등을 확실하게 이해하여, 이후의 프로그래밍에 있어 자신 있고 근거 있게 레디스를 채택하고 사용할 수 있는 개발자를 목표로 독서 시작
- 8.6 레디스 클러스터 설치 방법 (p.503) ~ 8.6 레디스 클러스터 설치 방법 (p.529)
- 도서 내 모든 내용 이해 및 실습 완료
✍️ 자료조사 및 블로그 정리
1️⃣ 레디스 클러스터
✏️ 코딩 테스트
🔨 풀이 변경점
class Solution {
long[] dp;
static final long MOD = 1_000_000_007;
public int solution(int n) {
if (n % 2 != 0) {
return 0;
}
dp = new long[n + 1];
dp[0] = 1;
dp[2] = 3;
for (int i = 4; i <= n; i += 2) {
dp[i] = (4 * dp[i - 2] - dp[i - 4] + MOD) % MOD;
}
return (int) dp[n];
}
}
- 2차 점화식을 사용
- 실전 테스트에서 생각해내지 못할 가능성 존재할 것이라 판단
- 시간복잡도 면에서는 여유가 좀 있기에, 차라리 시간복잡도를 조금 더 쓰더라도 1차 점화식 방식으로 구현
class Solution {
long[] dp;
static final long MOD = 1_000_000_007;
public int solution(int n) {
if (n % 2 != 0) {
return 0;
}
dp = new long[n + 1];
dp[0] = 1;
dp[2] = 3;
for (int i = 4; i <= n; i += 2) {
dp[i] = (3 * dp[i - 2]) % MOD;
for (int j = i - 4; j >= 0; j -= 2) {
dp[i] = (dp[i] + (2 * dp[j])) % MOD;
}
}
return (int) dp[n];
}
}
- 1차 점화식만으로 풀이
- 기존 3가지 패턴 에 짝 패턴이 발생할 가능성을 시그마로 나타낸 1차 점화식을 그대로 풀이 로직에 사용
- 기존 1차 반복문에서 2차 반복문으로 시간복잡도는 증가했지만, 조금 더 떠올리기 편한 방식
- 최종 시간복잡도 : O(N²)
- 이중 반복문 : O(N²)
- 최종 시간복잡도 : O(N²)