728x90
반응형
백준
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
- 오늘의 학습 키워드 : DP 리팩토링
- 공부한 내용 본인의 언어로 정리하기
DP
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] count = new int[N];
for (int i=1; i<count.length; i++) {
// 1을 빼는 경우
count[i] = count[i-1] + 1;
// 2로 나누어 떨어지는 경우
if (i % 2 == 0) {
count[i] = Math.min(count[i], (i / 2) + 1);
}
// 3으로 나누어 떨어지는 경우
if (i % 3 == 0) {
count[i] = Math.min(count[i], (i / 3) + 1);
}
}
System.out.println(count[N-1]);
}
}
리팩토링 (시간 초과 해결)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static Integer[] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
dp = new Integer[N + 1];
System.out.println(func(N, 0));
}
private static int func(int N, int count) {
if (N < 2) return count;
return Math.min( func(N/2, count+1+(N%2)), func(N/3, count+1+(N%3)) );
}
}
- 오늘의 회고 : DP를 사용하면서 값을 저장하지 않고 따로 count를 매개변수로 받아서 효율성을 높였다.
99클럽 1기를 수강하면서 작성한 글입니다.
99클럽-1기 모집 중
현직 개발자와 함께하는 코테 스터디
99club.oopy.io
728x90
반응형
'Blog > Education' 카테고리의 다른 글
99클럽 코테 스터디 18일차 TIL + map (0) | 2024.04.11 |
---|---|
99클럽 코테 스터디 17일차 TIL + stream (0) | 2024.04.10 |
99클럽 코테 스터디 15일차 TIL + DP (0) | 2024.04.08 |
99클럽 코테 스터디 14일차 TIL + Map key 사전순 정렬 (0) | 2024.04.07 |
99클럽 코테 스터디 13일차 TIL + 해시를 사용한 집합과 맵 (0) | 2024.04.06 |
댓글