목록Coding (52)
이우의 개발일지
백준 9095번 1,2,3 더하기 이번 문제는 DP를 잘쓰냐를 확인하는 문제이다.DP 의 중요한 점은 테이블과 점화식 세우기이다.이 규칙을 잘 파악할 수 있으면 금방 풀 수 있을 것이다. #include#includeusing namespace std;int d[10000005];int main() { int t; cin >> t; vector vec; for (int i = 0; i > num; vec.push_back(num); } d[1] = 1; d[2] = 2; d[3] = 4; for (int i = 4; i
백준 1463번 1로 만들기https://www.acmicpc.net/problem/1463 이 문제는 DP로 풀어야한다. (필자는 BFS로 풀었다가 시간초과가 떴다.. 코드는 올려놓겠다) 정수 N을 입력했을 때 1로 만들기 위한 최소 연산횟수를 구하는 문제이다.즉, 입력에 대한 연산횟수의 최소값에 따라 그 연산횟수를 응용하는 것이다.dp[i] = dp[i-1] + 1; if(i%2==0) dp[i] = min(dp[i], dp[i/2]+1); if(i%3==0) dp[i] = min(dp[i],dp[i/3]+1);이 부분의 경우 if문이 연달아 2개이기 때문에 조건이 성립되면 결국에 min(dp[i-1]+1, dp[i/2]+1, dp[i/3]+1)을 비교한 것이다!!Botto..
백준 2108번 통계학 https://www.acmicpc.net/problem/2108 이 문제에서 너무 어렵게 생각했던 점은 입력되는 값이 음수일 수도 있으니, 그 값을 어떻게 처리하냐의 문제였다. 입력되는 정수의 절댓값은 절대 4000이 넘지 않는다. 라고 되어있어서 다른 풀이를 보니 arr[8001] 같이 아예 전체 음수까지해서 범위를 8000이라고 둔 것이다. 문제 풀 때는 범위확인을 잘해서 내가 배열범위를 미리 지정해줘도 괜찮은 값이면 쓰는게 나을 것 같다. #include#include#include#includeusing namespace std;int main() { int n; cin >> n; vector vec; vector che; double a=0; int result[4..