본문 바로가기

컴퓨터/백준 알고리즘

(177)
백준 알고리즘 11054번: 가장 긴 바이토닉 부분 수열 [C++] 문제 출처: www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 1. 코드 #include using namespace std; int main(void) { int n, a[1000], left[1000], right[1000];//n = 수열 a의 크기, a = 입력된 수열, left = 왼쪽부터 시작하는 LIS, right = 오른쪽부터 시작하는 LIS int result = 0; cin >> n; for (int i = 0; i > a[i]; fo..
백준 알고리즘 10844번: 쉬운 계단 수 [C++] 문제 출처: www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 1. 코드 #include #define MIN 1000000000 using namespace std; int main(void) { int n, sum = 0; int dp[101][10] = { 0, }; cin >> n; for (int i = 0; i < 10; i++) dp[1][i] = 1; for (int i = 2; i
백준 알고리즘 1463번: 1로 만들기 [C++] 문제 출처: www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 1. 코드 #include #include using namespace std; int dp[1000001] = { 0, }; int main(void) { int n; cin >> n; for (int i = 2; i
백준 알고리즘 1932번: 정수 삼각형 [C++] 문제 출처: www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 1. 코드 #include #include using namespace std; int tri[501][501]; int dp[501][501]; int N; int solution(int deep, int index) { if (deep == N - 1) return tri[deep][index];//맨 밑에 있는 요소에 접근했을 때 if (!dp[deep][index])// 대각선 왼쪽과 오른쪽의 값을 비교 후 더 큰 값을 현재 위치의 값을 더한 결과를 dp에 저장 ..
백준 알고리즘 1932번: RGB거리 [C++] 문제 출처: www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 1. 코드 #include #define MAX 9999999 using namespace std; int rgb[3][1000]; int last[3][1000]; int N; int low = 9999999; void solution(int deep, int check, int sum) { if (deep == N) { if (low > sum) low = sum; retu..
백준 알고리즘 9461번: 파도반 수열 [C++] 문제 출처: www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 1. 코드 #include using namespace std; long arr[101] = { 0, 1, 1 }; long solution(int n) { if (n == 0) return 0; else if (n == 1) return 1; else if (arr[n]) return arr[n]; else return arr[n] = solution(n - 2) + solution(n - 3); } ..
백준 알고리즘 1904번: 01타일 [C++] 문제 출처: www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 1. 코드 #include using namespace std; int arr[1000001] = { 0, 1, 2 }; int solution(int n) { if (n == 0) return 0; else if (n == 1)return 1; else if (arr[n]) return arr[n]; else return arr[n] = (solution(n - 1) + solution(n - 2)) ..
백준 알고리즘 9184번: 신나는 함수 실행 [C++] 문제 출처: www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 1. 코드 #include using namespace std; int arr[21][21][21]; int w(int a, int b, int c) { if (a 20) return w(20, 20, 20); else if (arr[a][b][c] != 0) return arr[a][b][c];//이미 저장된 값이라면 else if (a < b && b < c) arr[a][b][c] = w(a, b..