본문 바로가기

Python76

백준 알고리즘 11047 (동전 0) - python 백준 알고리즘 11047 (동전 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 의외로 시간이 조금 걸렸다. 이 문제는 풀이가 간단해지는 전제 조건들이 있다. 1. 주어진 동전들로 무조건 조합이 된다 : 예외 처리 없어도 됨 2. 동전은 오름차순으로 입력이 들어온다 : 역순으로만 하면 내림차순 따라서, 나름 간단하게 풀이가 가능하다. 1. 큰 수부터(역순으로) 목표 K를 .. 2021. 7. 28.
백준 알고리즘 11653 (소인수분해) - python 백준 알고리즘 11653 (소인수분해) > https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 오랜만에 다시 블로그로 알고리즘 공부를 다시 시작하려 한다... 그 동안 일이 너무 바빠서 못했지만 이제라도 하나씩 다시!!!! 화이팅!!!! 언어는 역시 python이라도 잘해야겠다. python만 판다! 1. 정수 N을 입력 받는다. 2. m(2부터 시작)으로 나눠질 때까지(N % m == 0) 나눈다. 3. 나눠질 때마다 출력한다. 4. 더이상 나눠지지 않으면 m+=1을 한다. 5. 나눠진 수가 자신이면 while문 종료 [code] N = int(input()) m .. 2021. 7. 20.
백준 알고리즘 1932 (정수 삼각형) - C++, Python [문제] 백준 알고리즘 1932 (정수 삼각형) > https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 www.acmicpc.net 부분 문제를 정의하여 점화식 찾기 + 누적하는 방식의 문제이다. 부분 문제를 위한 .. 2019. 11. 15.
백준 알고리즘 2630 (색종이 만들기) - C++, Python [문제] 백준 알고리즘 2630 (색종이 만들기) > https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. 하얀색으로 칠해진 칸은 0, 파란색으로 칠해진 칸은 1로 주어지며, 각 숫자 사이에는 빈칸이 하나씩 있다. www.acmicpc.net '분할 정복(Divide and Conquer)' 문제이다. 분할 정복은 보통 재귀함수의 응용인데, 원하는 조건을 만족하지 않으면 문제를 분할(=작은 부문제)해서 해결하는 방식으로 다시 재귀시킨다. 4등분을 하면.. 2019. 11. 8.
백준 알고리즘 1149 (RGB거리) - C++, Python [문제] 백준 알고리즘 1149 (RGB거리) > https://www.acmicpc.net/problem/1149 1149번: RGB거리 RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이고, 첫 집과 마지막 집은 이웃이 아니다. 각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠하는 비용의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net 집에 빨강, 초록, 파랑 중에 하나의 색을 칠하려는데, 이웃은 같은 색을 칠할 수 없다. 각 색깔에 대한 비용이 주어질 때, 모든 집을 칠하는 .. 2019. 11. 7.
백준 알고리즘 9461 (파도반 수열) - C++, Python [문제] 백준 알고리즘 9461 (파도반 수열) > https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하 www.acmicpc.net 나선에서 가장 긴 변의 길이를 갖는 정삼각형을 계속 추가하는 수열 문제이다. DP.. 2019. 11. 4.
백준 알고리즘 1904 (01타일) - C++, Python [문제] 백준 알고리즘 1904 (01타일) > https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수 www.acmicpc.net 2진 수열에서, 0을 하나만 못 쓰고 0을 짝수 개로 쓸 수 있을 때, n의 2진 수열은.. 2019. 11. 3.
백준 알고리즘 2748 (피보나치 수 2) - C++, Python [문제] 백준 알고리즘 2748 (피보나치 수 2) > https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 www.acmicpc.net 피보나치 문제, DP문제이다. N이 주어지고, N번째 피보나치 수를 출력하는.. 2019. 10. 29.
백준 알고리즘 1003 (피보나치 함수) - C++, Python [문제] 백준 알고리즘 1003 (피보나치 함수) - C++, Python > https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 0이 호출되는 횟수와 1이 호출되는 횟수를 공백으로 구분해서 출력해야한다. 피보나치 함수를 동적계획법(=DP, 다이나믹 프로그래밍)으로 작성하는 문제이다. 메모이제이션(Memoization)을 활용하는데, 이는 동일한 계산을 반복할 때 이전 값을 메모리에 저장하여 반복 수행을 제거하여 실행 속도를 빠르게 하는 기술이고, 동적계획법의 핵심이다. [문제 해결] 1. 메모이제이션을 활용할 dp[41]을 생성, 테스트 케이.. 2019. 10. 27.
728x90