2025-10-21 학습 기록

랏 뜨·2025년 10월 21일

📑 세부 학습 내용


📅 스케쥴

  • 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²)
profile
기록

0개의 댓글