728x90

프로그램 언어/BaekJoon 7

백준 알고리즘 - 2798

https://www.acmicpc.net/problem/2798 오늘은 백준 문제를 풀어보았다. C언어로 풀었고, 기록용으로 남겨둔다. 먼저 내가 푼 방법이다.#include #include int main() { //N : 카드 장수 , M : 근접해야하는 수 int N, M; scanf("%d %d", &N, &M); // 각 카드의 숫자 int* num = (int*)malloc(sizeof(int) * N); int check = 300000, com = 0, result = 0; for (int i = 0; i = 0 && check >= com) { check = com; result =..

벌집

https://www.acmicpc.net/problem/2292 문제는 위 링크를 참고하면 알수 있다. 풀이는 먼저 각 방마다 거리가 증가할때의 숫자 범위를 찾아보았다.1 ~ 1 : 거리 12 ~ 7 : 거리 28 ~ 19 : 거리 320 ~ 38 : 거리 4 이런식이다.이것을 확인해 봤을 때 처음빼곤 뒤로 갈수록 증가한 수의 6씩 증가한다.거리1에서 거리2, 거리 2에서 거리3, 거리 3에서 거리 4.... 은 전부 6씩 차이난다.이것을 이용해 문제를 풀었다. #define _CRT_SECURE_NO_WARNINGS#include int main() { int N; int cnt = 1; scanf("%d", &N); int i = 1, j = 1; while (1) { if (N  간단하다.처음 ..

DP(Dynaminc Programming)- 4

문제. https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 방법. 점화식을 찾기 위해 하나 하나 값을 구해보았다. N 갯수 식 1 1 1 2 2 2 3 4 4 4 7 arr[4] = arr[1] + arr[2] + arr[3] 5 13 arr[5] = arr[2] + arr[3] + arr[4] 6 24 arr[6] = arr[3] + arr[4] + arr[5] 위의 식을 보면 다음과 같은 점화식을 얻을 수 있다. arr[i] = arr[i - 3] + arr[i - 2] + arr[i - 1] 이것을 코드로 나타내면, int dp(int N)..

DP(Dynaminc Programming)-3

문제. https://www.acmicpc.net/submit/11727 로그인 www.acmicpc.net 방법. 백준 문제 11726에서 2x2의 블럭이 추가된 문제이다. 이것 또한 그림을 그리면서 풀었다. n 갯수 식 1 1 arr[1] = 1 2 3 arr[2] = 3 3 5 arr[3] = arr[2] + 2 * arr[1] 4 11 arr[4] = arr[3] + 2 * arr[2] 5 21 arr[5] = arr[4] + 2 * arr[3] 6 43 arr[6] = arr[5] + 2 * arr[4] 따라서 arr[i] = arr[i-1] + (2 * arr[i-2])이라는 점화식을 얻을 수 있습니다. 코드로 나타내면, int DP(int a) { if (a == 1) return arr[1..

DP(Dynaminc Programming)-2

문제. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 방법. n을 입력 받았을 때 1x2나 2x1로 2xn을 남은 공간없이 가득 채워야 한다. 직접 그림을 그려 가면서 확인해본 결과, n 갯수 식 1 1 arr[1] = 1 2 2 arr[2] = 2 3 3 arr[3] = arr[1] + arr[2] 4 5 arr[4] = arr[2] + arr[3] 5 8 arr[5] = arr[3] + arr[4] 6 13 arr[6] = arr[4] + arr[5] 따라서 ..

DP(Dynaminc Programming)-1

백준 1463 문제. https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 방법. 점화식을 찾고 그 점화식을 코드에 적용시키면 된다. 내가 접근한 방식은 일단 규칙을 찾을려고 노트에 하나씩 봤다. i 최소 횟수 식 1 0 arr[1] = 0 2 1 arr[2] = 1 3 1 arr[3] = 1 4 2 arr[4] = 1 + arr[i / 2] 5 3 arr[5] = 1 + arr[i - 1] 6 2 arr[6] = 1 + arr[i / 3] or 1 + arr[i / 2] 7 3 arr[7] = 1 + arr[i - 1] 8 3 arr[8] = 1 + arr[i ..

입출력_문제_1

백준 10951 문제 https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 방법. 이 문제는 받는 수의 끝을 알 수 없기에 입력에서 더 이상 읽을 데이터가 존재하지 않을 때 반복문을 끝내면 된다. 처음에 내가 풀었던 방식. #include using namespace std; int main() { int a, b; while (!cin.eof()) { cin >> a >> b; cout a >> b).eof()) { cout

728x90