본문 바로가기

분류 전체보기111

P11047. 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 설명 K원을 만드는데 필요한 동전 개수의 최솟값을 구하기 위해 K원보다 작은 수 중 가장 인접한 수부터 하나씩 빼기 시작했다. 이진 탐색 본인은 인접한 수를 찾을 때, 이진 탐색을 사용했는데 값을 업데이트할 때마다 K원보다 작은 수 중 가장 인접한 수를 찾고 빼는 방식을 사용한다면, 시간 초과가 발생한다. 이를 해결하기 위한 방법은 .. 2023. 5. 3.
DP(Dynamic Programming)이란? - 스티커, 동전, LCS, 행렬 곱셈 순서 동적 프로그래밍이란? 동적 프로그래밍은 큰 문제를 풀 때, 큰 문제의 일부인 작은 문제를 푸는 과정에서 발생하는 중복을 해결하는 방법이다. 이때 큰 문제의 해답에 그보다 작은 문제의 해답이 포함되어 있는 것을 최적 부분 구조(Optimal Substructure)를 가졌다고 표현한다. 대표적인 예시로 피보나치 수열이 있다. 피보나치 수열은 다음의 정의를 갖는다. f(n) = f(n-1) + f(n-2) f(1) = f(2) = 1 즉, n은 n-1과 n-2 피보나치 수를 모두 갖고 있다. 만약 이 문제를 재귀호출로 푼다면 어떨까? fib(n) { if (n == 1 or n == 2) then return 1 else return (fib(n-1) + fib(n-2)) } 이렇게 푸는 방식은 매우 비효율.. 2023. 5. 3.
WEEK01. 특별한 과제 벌써 정글에 온 지 5일이 되었다. 이곳에서는 목요일이 한 주의 끝이고, 금요일이 시작인데 어떻게 보면 이 글을 쓰는 시점인 오늘(어제)이 새로운 한 주의 시작이다. 오기 전까지 다른 사람들의 후기에서 이 과제를 여럿 봤는데 이제 내가 이 글을 작성할 시점이라는 게 신기하다. 1월부터 모집을 시작했으니 작성한 지 벌써 3개월이 지난 지원서를 다시 읽어보았다. 오랜만에 읽어보니 조금은 꾸며진 간절함이 어색하기도 하다. 과거의 나 내가 정글에 지원한 이유는 단 한 가지다. 스스로 당당할 만큼 개발 공부에 몰입하는 것!👩‍💻 사실 나는 1학년 때부터 개발 동아리에서 활동했지만, 개발보다 다른 것이 더 재미있었다. 서로 알고 있는 것을 적극적으로 공유하는 개발 문화는 좋아했지만, 개발은 진득하게 하지 않았다. .. 2023. 5. 3.