목록Study/Algorithm (400)
hwooo
https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net 코드 #include int main() { int N, num[100], v, cnt=0; scanf("%d", &N); for (int i = 0; i < N; i++) scanf("%d", &num[i]); scanf("%d", &v); for (int i = 0; i < N; i++) { if (num[i] == v) cnt++; } printf("%d", cnt); retur..
https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 풀이 x mod N = (x mod N) mod N 코드 #include int main() { int n; int num = 1, p = 1; while (1) { if (scanf("%d", &n) == EOF) break; while (num%n != 0) { num = num * 10 + 1; p++; num %= n; } printf("%d\n", p); p = num = 1; } return 0; }
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 풀이 두 원의 접점의 갯수 공식을 이용. 있을 수 있는 위치의 개수가 무한대인 경우는 두 원이 같을 때이다. 코드 #include #include int Cnt(int, int, int); int main() { int T; int x1, x2, y1, y2, r1, r2; double dis; scanf("%d", &T); for (int t = 0; t < T; t++) { scanf("%d %d %d %d %d %d", &x1, &y1, &r1..
https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 코드 #include #include using namespace std; vector V; int N, K, cnt = 0; int *tmp; void merge(vector &V, int s, int m, int e) { int i, j, t; i = s, j = m + 1, t = 1; while (i
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 #include #include #include using namespace std; deque Q; int main() { int i, n, N; char s[11]; scanf("%d", &N); for (i = 0; i < N; i++) { scanf("%s", &s); if (!strcmp(s, "push_front")) { scanf("%d", &n); Q.push_..
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 풀이 i번째 원소에 접근하면서 루프를 돌리는 게 편할 것 같아 처음엔 벡터를 사용 다음 사람을 뽑기 위해 i++을 할 때 N이 고정된 것이 편할 것 같아, 나간 인원을 벡터에서 없애지 않고 값을 0으로 바꿈 마지막 인원을 세려면 cnt==K가 될 때까지 N*3번 돌아야 해서 더 간단하게 풀 수 있는 방법이 있을 것 같음. 알고리즘이 큐로 분류되어 있어서 큐로 짜보니 훨씬 간단했다. 배열처럼 접근해야 될 거라 생각했는데 K-1번 pop, push를 반복하면 쉽게 풀렸다. 코드 1 :..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 코드 #include #include #include using namespace std; queue Q; int main() { int i, N, num; scanf("%d", &N); for (i = 1; i
https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 #include #include #include using namespace std; queue Q; int main() { int i, n, N; char s[6]; scanf("%d", &N); for (i = 0; i < N; i++) { scanf("%s", &s); if (!strcmp(s, "push")) { scanf("%d", &n); Q.push(n)..