문제 링크 D. Happy Number 문제에 적혀 있는 함수 f가 있다. f(f(f(...f(n))))을 했을 때, 1이 되는지를 구하는 문제다.입력으로 주어지는 수는 최대 1,000,000,000인데, 큰 수가 주어진다하더라도 f(n)의 결과값은 작다. 때문에 이 문제는 함수 f를 구현하고 결과값이 1이 되는지만 확인하는 간단한 문제가 된다. #include using namespace std; int N; int main() { set vis; scanf("%d", &N); while (N > 1){ if (vis.count(N)){ puts("UNHAPPY"); return 0; } vis.insert(N); int nxt = 0; for (int v=N;v;v/=10) nxt +=..
문제 링크 I. Robot 로봇은 초기에 동쪽을 바라보고 있고, (0,0) 위치에 있다. 회전하는 명령과 앞으로 이동하는 명령이 주어졌을 때, 주어진 정사각형 범위를 벗어나는지 아닌지 확인하고 벗어나지 않으면 최종 위치를 출력하는 문제다. 단순한 구현 문제이므로 설명은 생략한다. #include using namespace std; int yy[] = {0, -1, 0, 1}, xx[] = {1, 0, -1, 0}; int M, N; int y, x, dir; int main() { scanf("%d%d", &M, &N); for (int i=1;i M || x > M){ puts("-1"); return 0; } } printf("%d %d\n", x, y); } G. Percolation $M ..
문제 링크 I. Q-Index n개의 논문들에 대한 인용횟수가 주어지고, k번 이상 인용된 k편의 논문이 있고, 나머지 n−k편의 논문은 모두 인용횟수가 k이하일 때, Q-Index는 k라고 얘기한다. 가능한 Q-Index 중 가장 큰 값을 구하는 문제다. 매우 쉬운 문제라 0이상 n이하의 k를 정한 뒤, 실제로 k가 Q-Index가 되는지 확인하는 O(n2) 방법과 인용횟수 배열을 내림차순으로 정렬한 뒤에 이를 더 빠르게 계산하는 O(nlgn) 방법 두 가지가 있다. #include using namespace std; int N; int A[1001]; int main() { scanf("%d", &N); for (int i=1;i= i){ printf(..
문제 링크 E. 닉네임에 갓 붙이기 N개의 닉네임이 음절 단위로 쪼개져 주어진다. 첫 음절을 제외하고, 맨 앞에 "god"을 붙여 출력하는 문제다. 줄 별로 입력받고 입력 받은 문자열을 공백으로 나누어 문자열 배열로 만들어주면 된다. C, C++에서 이는 strtok 함수를 통해 간단히 해결할 수 있다. #include using namespace std; int T; char buf[999]; int main() { for (scanf("%d ", &T);T--;){ fgets(buf, 997, stdin); bool sw = 0; printf("god"); for (char *pt=strtok(buf, " \n\r");pt;pt=strtok(0, " \n\r")){ if (sw) printf(pt..
문제 링크 L. Wheel of Numbers 숫자 N개가 적힌 원판이 있다. 원판에 다트를 던져 한 곳을 맞춘다. 그 다트를 기준으로 시계방향으로 숫자 M개를 읽어 수 Z를 만든다. X ≤ Z ≤ Y 라면 점수를 획득한다. 원판과 X, Y가 주어졌을 때, 점수를 획득하는 경우의 수를 구하는 문제다.아주 간단한 구현 문제다. M ≤ 9이므로, 64bit 정수형을 사용해서 X, Y, Z를 표현할 수 있다. #include using namespace std; typedef long long lld; int T, N, M; int A[100]; lld X, Y; int main() { for (scanf("%d", &T);T--;){ scanf("%d%d", &N, &M); X = Y = 0; for (in..
문제 링크 A. Awkward Group N개의 정점이 간선에 가중치가 있는 완전 그래프가 있다. 정점의 전체 집합 P의 부분 집합 F가 있다고 했을 때,문제에 적힌 조건을 만족하는 F의 개수를 구하는 문제다. 초기에 간선이 전혀 없는 그래프를 생각하자. 가중치가 작은 간선들부터 차례로 추가해나간다. 간선 하나를 추가할 때마다 그 간선이 속한 연결 요소(connected component)가 완전 그래프인지 확인한다. 만약 완전 그래프라면 그 연결 요소에 있는 정점들이 문제의 조건을 만족하는 집합 F가 됨이 자명하다. 완전 그래프인지 확인하는 것은 연결 요소 내의 정점 개수와 간선 개수를 비교하여 O(1)에 해결 가능하다. 만약 가중치가 같은 간선이 여러 개라면 한 번에 추가해야한다. ..
- Total
- Today
- Yesterday
- z-trening
- BOI
- Dijkstra
- Algorithm
- Splay Tree
- Knuth Optimization
- Boyer-Moore Majority Vote Algorithm
- IOI2011
- Segment tree
- Boyer
- Parametric Search
- IOI2012
- idea
- IOI2014
- majority
- USACO
- HackerRank
- BOI 2009
- Tree
- BOI 2001
- TRIE
- ioi
- Divide & Conquer
- vote
- optimization
- Greedy Method
- moore
- IOI2013
- Dynamic Pramming
- dynamic programming
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |