알고리즘 166

[C++/BOJ] 백준 2156 포도주 시식 (DP)

https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 백준 티어 : 실버 1 => 포도주의 개수와 각각의 양이 주어질때, 3번연속으로 마시지 못한다는 제한이 있다. 이때 마실 수 있는 포도주의 양을 출력하는 문제이다. 해설 : DP를 이용하여 푸는 문제다. 3번연속으로 마실수 없다는 것을 염두해서 풀이해야한다. 크게 두가지의 경우가 있다. 1) n번 포도주를 마시지 않는 경우 2) n번 포도주를 마시는 경우 n번째를 마시는 경우에는 또 2가지의 경우로..

[C++/BOJ] 백준 1932 정수 삼각형 (DP)

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 백준 티어 : 실버1 => 삼각형이 입력되고 (0,0)을 시작으로 삼각형의 마지막줄까지 최대가 되는 경로를 찾아 출력하는 문제이다. 해설 : DP를 이용하여 풀이하면된다. 숫자를 저장할 이차원배열(mp) 과 최대 경로를 저장할 이차원배열(cache) 을 정의한후 재귀를 이용한 dp로 풀이한다. 정답 코드 : #include #include #include using namespace std; int n; int mp[501][501],cache[501][501]; in..

[C++/BOJ] 백준 12101 1,2,3더하기2 (백트래킹)

https://www.acmicpc.net/problem/12101 12101번: 1, 2, 3 더하기 2 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. www.acmicpc.net 백준티어 : 실버1 입력 첫째 줄에 정수 n과 k가 주어진다. n은 양수이며 11보다 작고, k는 231-1보다 작거나 같은 자연수이다. 출력 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. 예제 입력 1 복사 4 3 예제 출력 1 복사 1+2+1 => n과 k가 입력될때 총 합이 n이 되는 1,2,3의 합으로 이루어진 식의 k번째 식을..

[C++/BOJ] 백준 11051 이항계수2 (DP) 알고리즘 문제풀이

문제 링크 백준티어 : 실버 1 https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net N과 K가 주어질때 그 이항계수의 값을 구하는 문제입니다. 이와 똑같은 문제인 이항계수1이 있는데 그것과 같은 풀이를 하면 시간초과가 납니다. 이 문제는 dp를 이용하여 풀어야합니다. 먼저 이항계수 nCk = (n-1)C(k-1) + (n-1)Ck 입니다. 문제를 풀다보면 이항계수의 개념이 몇번 나오기때문에 외워두는 것이 편할것같습니다. 해답코드 : #include #include using namespace std; int n, k;..

[C++/BOJ]백준 1012 유기농배추(BFS) 알고리즘 문제풀이

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net BFS, DFS의 기본문제인 실버2 유기농 배추이다. BFS의 기초만 알고있다면 쉽게 풀수있다. 바킹독님 코드를 보며 공부했기때문에 코드는 갓킹독님의 BFS의 풀이와 유사할것이다. #include #include #define x first #define y second int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0}; using namespace std; in..

[C++/BOJ]백준 1074 Z 재귀 알고리즘 문제풀이

www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net blog.encrypted.gg/943?category=773649 백준 재귀문제 Z를 풀어보았다. 풀이는 갓킹독님의 풀이를 보며 공부하였다. 티어는 실버1이다. 재귀문제인만큼 반복적으로 호출할수있는 함수를 만들어야한다. #include using namespace std; int func(int n, int r, int c) {//r은 행 c는 열 if (n == 0) return 0; int half..