백준 78

[C++/Python/BOJ] 백준 11053 가장 긴 증가하는 부분 수열 (DP)& 반례

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이 문제는 LIS(최장 증가 부분 수열)으로 이와 비슷한 백준문제(같이 풀면 좋을 문제)에는 가장 긴 감소하는 부분 수열 [11722번] 가장 긴 바이토닉 바이토닉 부분 수열 [11054번] 상자넣기[1965번] 전깃줄[2565번] 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개..

[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..

백준 티어 골드 달성!

저는 2021년 1월 27일 백준 알고리즘 문제풀이를 시작하였습니다. 알고리즘 문제를 풀어야한다는것은 듣기만 하였지만 절실히 풀어야할동기는 없었습니다. 그러던중 에타와 카톡 광고로 멋쟁이사자처럼, 싸피, 소마 등을 접하게 되었고 한번 지원이나 해보자! 라는 마음이었습니다. 지원서를 작성하면서 적을게 없더군요.ㅎㅎ 이때 1,2학년에 대한 후회와 남들 다 하는 깃허브와 백준조차 하고 있지않다는 생각에 미래가 두려워졌습니다. 지금까지의 저는 학교공부만을 그럭저럭 따라갈뿐 이외에 프로젝트, 포트폴리오를 만들생각조차 하지못하였습니다. 약간 늦은감이 있지만 대학교 3학년올라가는 겨울방학의 끝자락에 꾸준히 문제라도 풀어보자는 생각이 들었습니다. 평소 승부욕이 있는편이라 백준의 solvd.ac로 저의 랭크를 확인하고 ..

자기계발/일기 2021.05.11

[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..