본문 바로가기

전체 글

(33)
4. 동적계획법 (Dynamic Programming) ✅ 동적 계획법이란? ㅇ 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하고, 다시 큰 문제를 해결할 때 사용하는 것. ㅇ 즉, 한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘이다. ㅇ 동적 계획법은 다이나믹 프로그래밍(DP) 라고도 불린다. ✅ 동적 계획법의 조건 1️⃣ 최적 부분 구조 ㅇ 부분 문제의 최적 결과 값을 사용하여 전체 문제의 최적 결과를 낼 수 있는 경우. ㅇ 특정 문제의 정답은 문제의 크기에 상관없이 항상 동일하다는 특징이 있음. ㅇ 피보나치 수열의 점화식은 f(n) = f(n-1) + f(n-2)으로, 위와 같은 트리구조로 함수가 호출되게 된다. 위 그림에서도 쉽게 찾을 수 있듯이 fib(1), fib(2), fib(3)과 같이 동일한 부분 문제가 중복되어 ..
[백준] 1371번 파이썬 풀이 https://www.acmicpc.net/problem/1371 1371번: 가장 많은 글자 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이 www.acmicpc.net [문제] 영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다. 어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오. [입력] 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도..
[백준] 1252번 파이썬 풀이 https://www.acmicpc.net/problem/1252 1252번: 이진수 덧셈 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. www.acmicpc.net [문제] 두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오. [입력] 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. [출력] 첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다. [예제 입력1] 100..