dp 23

[백준] 1103 게임, C++

1103번: 게임 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 보드의 상태가 주어진다. 쓰여 있는 숫자는 1부터 9까지의 자연수 또는 www.acmicpc.net 문제 요약 동전이 보드 위에서 움직일 수 있는 최대횟수 구하기 접근 1. 생각의 흐름 1 - BFS 보드가 이차원이고 모든 방향을 탐색하면서 최대로 움직이는 횟수를 파악해야하므로 그래프 탐색중 BFS를 사용해야할 것 같았다. BFS는 특정 지점까지의 최소 거리를 구할 때 사용하는데 이 경우에서도 충분히 사용할수 있을 거라고 생각했다. (멈추는 지점까지의 최소 거리를 구하면 최대로 움직인 거리를 구하는 거랑 같을 거니까) 간단하게 적어보면 다음과 같다. (0,0)..

STUDY/Algorithm 2022.09.12

[백준] 21317 징검다리 건너기 C++

https://www.acmicpc.net/problem/21317 21317번: 징검다리 건너기 산삼을 얻기 위해 필요한 영재의 최소 에너지를 출력한다. www.acmicpc.net 쉬운문제인데 C++ 공부를 위해 풀었다. 현재 단계에 있는 모든 돌들을 확인하면서 다음 단계를 추가하고 가장 마지막에 있는 돌에서 최솟값을 찾는 방식으로 풀었다. #include #include using namespace std; int find_energy(int n, int super_jump, int jump[20][2]) { int i, j, cur, cur_chance, ret; vector memo[20]; memo[0].push_back(make_pair(0, 1)); for (i = 0; i < n; i++..

STUDY/Algorithm 2022.02.19

[백준] 19622 회의실 배정 3 C++

https://www.acmicpc.net/problem/19622 19622번: 회의실 배정 3 서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, www.acmicpc.net DP 문제이다. #include using namespace std; #define max(x, y) (x > y) ? x : y int main(){ cin.tie(0); ios::sync_with_stdio(0); int N, i, s, e, m; int memo[100000]; cin >> N; for (i = 0; i > s >> e >> m; if (i ..

STUDY/Algorithm 2022.01.23

[백준] 5582 공통부분 문자열, python(pypy)

https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net pypy에선 되는데 python에선 시간초과와 메모리 초과가 뜬다. python에서 하려면 다른 방법으로 접근해야한다. 문자 테이블을 만들어서 두 문자열을 비교했다. 비교하는 알파벳이 같으면 1로 체크하고, 같지 않으면 0으로 체크한다. 여기서 공통부분 문자(1이 체크된 것)에서 대각선 방향으로 가장 긴 배열찾으면된다. 길이를 알아야하므로 memoization을 실행할때 공통문자이고, ..

STUDY/Algorithm 2022.01.17

[백준] 13902 개업 2, python(pypy), C++

https://www.acmicpc.net/problem/13902 13902번: 개업 2 해빈이는 짜장면을 정말 좋아한다. 짜장면을 너무 좋아한 나머지 짜장면만 파는 중국집을 개업했다! 해빈이는 양손잡이여서 동시에 두 개의 웍(중국 냄비)을 사용하여 요리할 수 있다. 그러나 www.acmicpc.net 문제 자체는 어렵진 않으나 시간초과의 벽이 조금 있었다. 이 문제를 풀기위해서 동적계획법을 사용해야한다. 최대 두개의 웍을 사용해서 처리할 수 있는 양을 구해야하는데 set이라는 자료구조를 사용했다. 두개로 처리할수 있는 양을 동적 계획하여 0부터 N번째 양까지 계산하면 된다. import sys; input = sys.stdin.readline N, M = map(int, input().split())..

STUDY/Algorithm 2022.01.07

[백준] 1311 할 일 정하기 1, python, C++

https://www.acmicpc.net/problem/1311 1311번: 할 일 정하기 1 N명의 사람과 N개의 일이 있다. 각 사람은 일을 하나 담당해야 하고, 각 일을 담당하는 사람은 한 명 이어야 한다. 또한, 모든 사람은 모든 일을 할 능력이 있다. 사람은 1번부터 N번까지 번호가 매 www.acmicpc.net 어제와 이어서 비트마스크를 사용한 동적 계획법을 공부했다. 문제만 보면 모든 조합 만들어서 최솟값을 찾으면 된다. 그러면 완전탐색이나 백트래킹을 사용해서 탐색을 하면 모든 조합을 찾을수있다. 하지만 N의 최댓값이 20이므로 20^20 이나 20!은 매우 큰 숫자이므로 다른 방법을 찾아야한다. 완전 탐색을 하다보면 항상 겹치는 부분이 생기게 되는데 이때의 값들을 저장하고 일반적인 값을..

STUDY/Algorithm 2022.01.02

[백준] 12865 평범한 배낭 python

https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net import sys; input = sys.stdin.readline N, K = map(int, input().split()) stuff_list = [tuple(map(int, input().split())) for _ in range(N)] memo = [[0 for _ in range(K + 1)] for _ in range..

STUDY/Algorithm 2021.10.12

[백준] 11054 가장 긴 바이토닉 부분 수열, python

https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net N = int(input()) A = list(map(int, input().split())) dp_asc = [0 for _ in range(N)] dp_desc = [0 for _ in range(N)] for i in range(1, N): for j in range(0, i): if A[j] < A[i]: dp_asc[i] = max(dp_asc[i], dp_asc[j] + 1) for i in range(N..

STUDY/Algorithm 2021.07.05

[백준] 9095 1, 2, 3 더하기 C python

www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int arr[11] = { 0, 1, 2, 4 }; int T, n; for (int i = 4; i < 11; i++) { arr[i] += arr[i - 1] + arr[i - 2] + arr[i - 3] * 1; } scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%d", &n); printf("%d\n", arr[n]); } return 0; } arr = ..

STUDY/Algorithm 2021.05.04