<aside> 💡 Notion 팁: 새 페이지를 만들고 템플릿 목록에서 데일리 일기를 선택해 매일 아래 양식을 자동으로 생성할 수 있어요.

</aside>

오늘은 무엇을 배웠나요

  1. 알고리즘 코드카타
  2. 최종 팀 과제

이야깃거리

public class Solution {
    public int solution(int n) {
        int answer = 0;
        if (n <= 1) {
            return n;
        }

        int prev = 0;
        int current = 1;

        for (int i = 2; i <= n; i++) {
            int temp = current % 1234567;
            current = prev + current % 1234567;
            prev = temp % 1234567;
        }
        answer = current;
        return answer % 1234567;
    }
}

피보나치 수 문제를 간단하게 풀었다고 생각했는데, 제출해보니 7부터 끝까지의 테스트케이스에서 틀렸다고 뜬다.

자료형의 크기에 제한이 있는 언어를 쓸 경우 (A + B) % C ≡ ( ( A % C ) + ( B % C) ) % C라는 성질을 이용해서 매번 계산 결과에 1234567으로 나눈 나머지를 대신 넣는 것으로 int 범위 내에 항상 값이 존재함을 보장할 수 있다.

(A + B) % C ≡ ( ( A % C ) + ( B % C) ) % C는 모듈러 연산이라고 하는데, 이렇게 하면 결과값이 1234567보다 작아지므로 int 범위 내에 값이 존재하게 된다.

(라는 힌트를 질문하기 탭에서 얻어 해결했다.)

지금 4단계쪽 문제를 풀고 있는데, 뭔가 갈수록 구현할 로직 자체는 어렵지 않지만 시간복잡도나 자료형을 고려해야 하는 문제가 많아지는 것 같다. 🤔

해야 할 일들

  1. UI쪽 마무리

  2. 데이터 매니저도 만들어야 함

    1. 아이템 데이터에 접근할 때 데이터의 매니저에 딕셔너리나 배열을 만들어서 바로 접근하게 만들면 좋을 거 같음 (접근을 키로 할지, 아이템마다 id를 만들어 배열의 숫자로 할지 정해야 함)
    2. 또는 csv파일에 작성한 내용을 가지고 불러와서 알맞은 변수에 할당하는 것도 필요