목록알고리즘/Codeforces (6)
tony9402
(소스코드 중요 부분만 있습니다.) A. Dislike of Threes Tag : 구현 Time Complexity : 전처리 $O(1666)$, 테스트 케이스 당 $O(1)$ 3으로 떨어지는 수와 수의 일의 자리에 있는 숫자가 3인 경우를 제외한 나머지의 개수를 세면 된다. 입력으로 주어지는 수의 범위는 1000까지이므로 수가 1000개 뽑힐때까지 전처리하면 된다. (전처리 안 해도 충분히 돈다.) vector v; bool chk(int x) { if(x % 3 == 0) return false; x %= 10; if(x == 3) return false; return true; } int main(){ fastio(); for(int i = 1, cnt = 0; cnt < 1000; i++) { ..
저번 셋을 통해 4문제 2시간이 은근 짧다고 느껴져서 2문제를 추가하여 돌렸다. 총평은 역시 그리디가 많고 언제나 어렵다... [문제] Codeforces 1384 A [문제 유형] Greedy, Constructive algorithms [시간복잡도] $O(n)$ [풀이] 문자열 $S_{i}$와 $S_{i+1}$의 가장 긴 공통 접두사의 길이가 n개 주어진다. 이를 가지고 조건에 만족하는 문자열을 출력하면 된다. [소스코드] #include #define all(x) (x).begin(),(x).end() using namespace std; typedef long long ll; typedef pair pii; typedef pair pll; const ll MOD = 1e9 + 7; char nex..
백준에서 알고리즘 풀다가 최근에 다시 코드포스를 참가하면서 느낀점은 CP 실력이 더더욱 나빠졌다는 것이다. 따라서 실력을 상승시키기 위해 난이도를 정해놓고 빠른 시간에 풀 수 있도록 연습을 하려 한다. 처음은 간단하게 난이도 1000 ~ 1400 정도의 문제를 2시간 제한시간을 주고 풀기 시작하고 점차 너무 쉽거나 난이도를 올려도 될때는 문제 수를 늘리거나 난이도를 상향하여 계속 진행할 것 같다. [문제] Codeforces 1385 C [문제 유형] Greedy [시간복잡도] $O(n)$ [풀이] 배열 A에서 A의 접미사 ( $1 \le i \le n, ; [ a_{i} , a_{i+1} , ... , a_{n}]$ ) 중 $a_{i} \le a_{i+1} ... a_{i+k} \ge a_{i+k+1}..
오랜만에 코드포스를 했다. 6솔 할 수 있었는데 생각하지도 못한 부분 때문에 TLE가 떠서 5솔 밖에 하지 못했다... A. Candies and Two Sisters Problem - A - Codeforces codeforces.com a > 0, b > 0이고 a > b를 만족하는 a + b = n의 개수를 찾는 문제이다. n > 2 일때 b는 1부터 (n - 1) / 2까지 가능하고 n = 1일땐 (n - 1) / 2로 계산 가능하므로 그냥 n을 받으면 (n-1)/2를 출력하는 소스를 짜면 된다. B. Construct the String Problem - B - Codeforces codeforces.com 각 케이스 마다 n, a, b가 주어지는데 n은 문자열의 길이, a는 부분 문자열의 길이..
개강하고 첫 코포 한 날이였다. A. Middle of the Contest 예제를 읽고 문제를 대충 보니 두 시각이 주어지고 그 시각의 중간을 출력하면 되는 간단한 문제이다. ex) 10시하고 11시의 중간은 10시 30분 여기서 조심해야할 부분은 예제 3번처럼 2분이면 02분으로 출력해야한다. 하지만 이 처리는 매우 쉬운것으로 빠르게 처리하고 AC를 받았다. 1234567891011121314#include int main(){ int a,b,c,d; scanf("%d:%d",&a,&b); scanf("%d:%d",&c,&d); b+=a*60; d+=c*60; a=(b+d)/2/60; b=(b+d)/2%60; printf("%02d:%02d",a,b); return 0;}cs B. Preparatio..
오랜만에 에듀코포가 있어 해보게 되었다. 너무 오랜만이라 그런지 문제를 해석해야하는데 해석도 안되고 문제를 읽기도 싫어서 대충 예제를 보고 풀려고 했지만 A번은 1시간 동안 안 풀려서 B -> A -> C로 풀었더니 1시간이 훌쩍 지나가버렸다. A번은 두 문자의 차이가 2 또는 0(같은것)인것을 보면 되는 단순한 문제였는데 문제를 안읽어 제출을 많이 했다. B번은 대충 배열 쓰면 되겠지하고 봤더니 n의 범위가 최대 10^9여서 멍 때리다가 규칙을 찾고 대충 제출 했지만 케이스 n == 2일때만 틀려서 2일땐 그냥 노가다로 if문 떡칠을 하였다. C번은 처음에 O(n^2)로 풀었는데 TLE가 떠서 O(n) 풀이가 있을꺼 같아 살짝 그리디하게 짜봤더니 AC가 떳다. 시간 복잡도 A번 -> O(N)B번 -> ..