목록C,C++/코딩테스트 (102)
오답노트
https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net - 문제파악 이항계수 n,k 의 값을 10007로 나눈 나머지로 출력하라 - 나의 접근 이항 계수 1에서 나머지와 for문을 살짝 바꿔줬는데 해도해도 안되더라.. - 정답 점화식을 활용해 메모이제이션을 해야한다.이항 계수의 성질중 하나는 다음과 같다. nCk = (n-1)Ck + (n-1)C(k-1) 참고로 위 공식은 파스칼의 삼각형과 같다. 위 공식을 점화식으로 메모이제이션을 실시한다. 초항인 k 가 0일때 그리고 k가 n 일때는 값이 1이다. #include "b..
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net - 문제파악 n 과 k 의 이항계수를 출력하라 - 정답 #include "bits/stdc++.h" using namespace std; int main() { int n, k; cin >> n >> k; if (!k || n == k) { cout
https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net - 문제 파악 연속되는 P일중 캠핑은 L일만 할 수 있다. 이 때 휴가가 V일이라면 캠핑 가능한 최대 일 수를 출력하라. - 정답 #include "bits/stdc++.h" using namespace std; int main() { int cnt = 1; while (1) { int a, b, c; cin >> a >> b >> c; if (!a && !b && !c) break; int..
https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net - 문제 파악 각 각 M진수 N진수가 주어지고 입력으로 주어지는 각각의 나머지를 만족하는 자연수 출력, 출력할 수 없으면 -1 출력 - 나의 시도 https://www.acmicpc.net/problem/1476 (날짜 계산) 과 같이 접근 하지만 그러면 시간초과 - 정답 1. M진수 먼저 생각했을 때, 입력으로 주어지는 M진수에 대한 나머지를 만족하는 자연수를 구하는 점화식을 구한다. 2. 1번으로..
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net - 문제파악 정수 N에 대해서 소인수분해한 결과를 출력하라 - 정답 #include "bits/stdc++.h" using namespace std; int main() { int n; cin>>n; vector vec; for(int i = 2; i*i
https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net - 문제 파악 수열 A와 B가 주어진다 수열 A의 원소와 수열 B의 원소를 비교했을 때, 수열 A가 큰 쌍의 개수를 출력하라 - 정답 #include "bits/stdc++.h" using namespace std; int arrA[20005]; int arrB[20005]; int main() { cin.tie(0); cout.tie(0); i..
https://www.acmicpc.net/problem/5648 5648번: 역원소 정렬 모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요. 단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니 www.acmicpc.net - 문제 파악 N 개의 정수가 입력된다. 이 정수를 뒤집은 수를 오름차순으로 정렬하여 출력하라 - 정답 정수를 모두 문자열로 받아 reverse 함수를 이용해 뒤집고 문자열을 다시 unsigned long long 으로 변환 해주었다. 문자열에서 숫자로 바꾸는 함수들 stoi : string -> int stoul : string -> unsigned long stoull : string -> uns..
https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net - 문제 파악 범위가 -2^62 ~ 2^62 인 정수가 N개 주어질 때, 개수가 가장 많은 정수를 출력하라, 개수가 같다면 그 중 제일 작은 정수를 출력하라 - 정답 무작위로 들어오는 수를 정렬을 통해서 개수를 세기 쉽게한다. 그 후 개수를 세어나가면 된다. 아래 항목들은 코드를 구현하면서 놓쳤던 부분이다. 여유롭게 선언한 배열 이용하기 : N의 제한 사항은 1부터 10만이다. 그래서 나는 ..
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net - 문제 파악 가입한 회원 순서대로 나이와 이름이 입력된다. 이때 나이에 대해 오름차순으로 출력하라. 단, 나이가 같을 경우 가입한 순서대로 출력한다. - 정답 #include "bits/stdc++.h" using namespace std; pair arr[100001]; pair tmp[100001]; void merge(int s, int e) { int m = (s+e)/2; int idx_a ..
https://www.acmicpc.net/problem/15688 15688번: 수 정렬하기 5 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이며, 같은 수가 여러 번 중복될 수도 있다. www.acmicpc.net - 문제 파악 수 정렬하기 4와 같으나 수에 중복이 있다. - 정답 #include "bits/stdc++.h" using namespace std; int arr[2000002]; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n,num; cin>> n; int nmin = 1000000, ..