백준 2798번 블랙잭 [C/C++]
2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 해결방법 세 개의 합을 구할 때 m보단 작되 제일 큰 수를 구하면 된다. 브루트 포스로 하나씩 비교해가면서 조건에 맞는 수를 찾으면 된다. 코드 #include using namespace std; int main() { int arr[100]; int n, m; cin >> n >> m; for (int i = 0; i > arr[i]; } int result = 0; int sum = 0; for..
2021.01.23
no image
백준 1158번, 11866번 요세푸스 문제 [C/C++]
1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 요세푸스 순열 n명이 동그랗게 모여있을 때 임의의 한 명부터 순서를 세어 k번째 사람을 모임에서 제외한다. 남은 n-1명에서 다시 다음 사람부터 순서를 세서 k번째 사람을 모임에서 제외한다. 이것을 아무도 남지 않을 때까지 계속해서 반복한다. 예를 들어 문제 입력에 10, 7이 주어지면 처럼 답이 나온다. 이것을 이해를 돕기위해 적어보았는데 오히려 직관성이 조금 떨어진다.. 어쨌든 요약하자면 사람의 수가 총 5명이 남았는데 7번째 사람을 죽여야 하는 경우라면 위 그림처럼 이루어진다. 풀이코드 코드1 #define _CRT_SECURE_NO_WARNING..
2021.01.23
백준 1085번 직사각형에서 탈출 [C/C++]
1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제는 간단합니다. x,y좌표를 기준으로 상하좌우로 가장 가까운 곳을 찾으면 됩니다. 코드1 #define _CRT_SECURE_NO_WARNINGS #include int main() { int x, y, w, h; int distance; int distance2; scanf("%d %d %d %d", &x, &y, &w, &h); if (w - x < x) distance = w - x; else distance = x; if (h - y < ..
2021.01.22
백준 2164번 카드2 [C/C++]
2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int main() { int n; long long value = 1; int figure = 1; //자릿수 int temp; scanf("%d", &n); for (int i = 2; i < n+1; i++) { value *= 10; value += i; figure *= 10; } //맨 앞의 숫자를 버리고..
2021.01.19
no image
백준 1966번 프린터 큐 [C/C++]
1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 우선순위 큐까지는 사용할 생각을 했는데, pair를 사용해 값과 인덱스를 담는 것을 생각못해서 시간이 많이 걸린 아쉬운 문제였다. 중요 포인트 요약 문제 Queue의 가장 앞에 있는 문서의 '중요도'를 확인 Queue다른 곳에 하나라도 '중요도'가 더 높은 것이 있다면 현재 가장 앞에 있는 문서를 Queue의 맨뒤로 보낸다. 가장 앞에 있는 문서의 '중요도'가 가장 높으면 바로 출력. 입력 총 테스트 케이스의 개수 테스트 케이스 첫째줄 2.1 문서의 개수 2.2 언..
2021.01.19
백준 1929번 소수 구하기 [C/C++]
1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 서론 이 문제는 자연수의 범위가 (1 ≤ M ≤ N ≤ 1,000,000) 까지 주어졌다. 즉, 최대 백만개가 되는 수들이 소수인지 판단해야 하기 때문에 일반적인 소수 구하는 방식으로는 시간초과가 뜰 것이다. 그래서 사용할 방법이 에라토스테네스의 체이다. 에라토스테네스의 체 간단한 개념이다. 소수는 자기자신과 1로 밖에 나누어지지 않는 수이다. 그러면 어떤 수의 배수는 소수가 될 수 없다. 그래서 2의 배수인 4,6,8 ... 들은 소수가 될 수 없고, 3의 배수도 마찬가지로 6, 9, 12 ..
2021.01.18
no image
백준 11050번 이항 계수 1 [C/C++]
11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이항 계수 개념은 조합의 설명을 보면 알 수 있습니다. 조합은 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것인데, 그 경우의 수가 이항계수입니다. 이 이항계수를 나타내는 방법은 $$ _n \mathrm{ C }_k$$ 또는 로 나타낼 수 있습니다. 요약하자면 이항 계수는 조합의 가짓수를 뜻하고, 이항의 의미는 뽑거나, 안 뽑거나 두 가지의 경우만 있기에 이항이라는 단어가 붙었습니다. 이항계수 구하는법 n! / k!(n-k)! 를 그대로 구현하는 방법. 점화식을 사용하기. 저는 구현할 때 점화식을 사용해 재귀로 구현했고,..
2021.01.13
백준 1978번 소수찾기 C/C++
1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 코드1 #include int main() { int count = 0; int n, num; int distinction = 0; std::cin >> n; for (int i = 0; i > num; if (num != 1) { for (int i = 1; i 2) break; } } } if (distinction == 2) ++count; distinct..
2021.01.10
백준 2908번 C/C++
2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int a, b; int temp = 0; int temp2 = 0; scanf("%d %d", &a, &b); for (int i = 100; i > 0; i = i / 10) { temp = temp + (a % 10) * i; temp2 = temp2 + (b % 10) * i; a = a / 10; b = b / 10; } printf("%d", (temp > temp2)..
2021.01.03