TIL 2022-05-01-일

그린·2022년 5월 1일
0

TIL

목록 보기
33/47

1. 오늘 학습한 내용

백준 동적프로그래밍 9184번 신나는 함수 실행 문제

2. 알게 된 내용

문제에서 주어진 재귀 함수는 그대로 이용해도 된다!

1) 재귀 함수는 문제에서 주어진 그대로 이용해도 되고, 이전에 계산했던 값들만 이용하려고 시도하면 된다. 따라서 a,b,c에 따른 결과 값을 저장하는 3차원 dp배열을 만들 것이다. 이때 w 함수를 잘 보면 a,b,c 값이 0보다 크고 20보다 작은 경우에만 취급해서 작업을 하는 것을 알 수 있다. 따라서 0 ~ 20까지의 경우를 담을 수 있도록, int[21][21][21] 크기로 필요하다.

2) 그리고 결과 값을 리턴하기 전에 dp 배열에 담은 후 리턴하는 것을 잊지 말자!

return dp[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c);

3) a,b,c 값이 0 ~ 20 사이의 값인지를 판단해줘야 한다. 이를 조금 더 보기 편하게 다른 메서드로 빼서 작업해도 된다.

static boolean inRange(int a, int b, int c) {
		return 0 <= a && a <= 20 && 0 <= b && b <= 20 && 0 <= c && c <= 20; 
}

출처 : https://st-lab.tistory.com/190

StringBuilder를 이용해 출력하면 더 효율이 좋다

BufferedWriter도 효율이 좋지만 더 뛰어난 것은 StringBuilder이다! 이 문제를 채점해보면서 다양한 출력방법을 사용해보았는데 StringBuilder를 사용했을 때 시간이 확 단축되었다. 앞으로 StringBuilder를 사용해보도록 해야겠다.
참고 : https://hardlearner.tistory.com/288

profile
기록하자

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN