TIL 2022-02-16 수

그린·2022년 2월 16일
0

TIL

목록 보기
11/47

1. 오늘 학습한 내용

백준 동적프로그래밍 문제 2193번
사용 언어 : 자바
내가 푼 코드 : https://github.com/MinYeongPark/Coding/blob/main/baekjoon/n2193/Main.java

2. 알게 된 내용

  1. int형만 고집하지 말자
    처음에는 메모이제이션할 배열의 데이터 타입을 int형으로 잡았었는데, 다른 분들의 코드를 살펴보다보니 입력값이 커지면 결과값이 너무 커져서 int 범위를 벗어나기 때문에 long형으로 하시는 경우가 있었다. 막혔을 때 long형으로 바꿔보는 작업도 시도해보자!

참고한 출처 : https://www.acmicpc.net/board/view/12447

  1. 모든 케이스에 대해 정확히 생각하자
    입력값의 범위는 1 <= N <= 90이라고 문제에서 주어졌었는데, 문제를 풀 때는 정작 1을 입력할 때에 대해서는 고려하지 않았었다. 그냥 dp[2]값을 넣어도 될 것이라 생각했었다.

따라서 백준에서도 위의 사진처럼 런타임 에러 (ArrayIndexOutOfBounds) 가 떴었는데, 다른 분의 코드를 참고해보니까 dp[0]과 dp[1]의 값을 지정해주는 것을 볼 수 있었다. 입력값이 1인 경우에는 배열의 크기가 2로, 0번 인덱스와 1번 인덱스만 존재하게 되는데 나는 이를 고려하지 않고 dp[2] 값을 초기화하고 있어서 런타임 에러가 뜬 것이였다.. 지금 보니까 dp[0] 값은 알아서 0으로 초기화되기 때문에 dp[1] 값만 초기화해주면 될 것 같다. 아무튼 모든 케이스에 대해서 꼼꼼히 확인하는 자세를 길러야겠다.

참고한 출처 : https://odysseyj.tistory.com/25

3. 느낀 점

오늘 풀면서 점화식도 꽤 빨리 쉽게 찾아서 기분이 좋았는데 계속 막혀서 어느 점이 문제일지 몰랐었다. 하지만 여러 선배님들의 글을 찾아보면서 내 코드의 미흡한 점을 깨닫게 되고 결국 정답으로 되어서 정말 뿌듯하다.
1을 입력할 때를 고려하지 않았다는 것이 조금 충격적이였는데,앞으로 여러 케이스를 직접 넣어보면서 꼼꼼히 확인해야겠다.

profile
기록하자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN