본문 바로가기

PS

(58)
Educational Codeforces Round 006. A A. Professor GukiZ's Robot 문제 https://codeforces.com/contest/620/problem/A Problem - A - Codeforces codeforces.com 문제요약 2차원 좌표상에서 시작점과 끝점을 받는데, 한 점에서 8방향으로 갈 수 있다고 할 때 시작점에서 끝점까지 몇 번만에 갈 수 있는가? 풀이 8방향이므로 x축 distance가 a, y축 distance가 b일 때 min(a,b)만큼은 대각선으로 간 후 abs(a-b)만큼은 x축이든 y축으로 직선으로 가면 시작점에서 끝점에 도달할 수 있다. 소스코드 #include int abs(int a){ return a
Educational Codeforces Round 005. A A. Comparing Two Long Integers 문제 https://codeforces.com/contest/616/problem/A 문제요약 긴 문자열 두개 a, b를 입력받아 정수로 나타냈을 때 어느게 더 큰지 나타내라 풀이 간단하게 둘 다 0이아닌곳부터 시작해서 우선 길이가 더 큰거 비교해서 대소 나타내고 길이가 같다면 반목문 돌면서 앞에서부터 각 문자 중 더 큰거 비교해서 대소를 나타낸다. 마지막까지 같다면 '=' 출력 소스코드 #include #include char a[1100000], b[1100000]; int main(){ scanf("%s\n%s",a,b); int x=0, y=0, n, m; n = strlen(a); m = strlen(b); for(;a[x] && a[x]=..
Educational Codeforces Round 004. A A. The Text Splitting 문제 https://codeforces.com/contest/612/problem/A Problem - A - Codeforces codeforces.com 문제 요약 n, p, q를 입력받고 n개 길의 문자를 p, q개 문자들로 쪼개어 그 개수 및 단어들을 출력한다 풀이 i) Naive Solution 반복문 돌면서 k = 1, 2, ... 에 대해 ( n - k * p ) % q == 0인 경우를 찾아 첫줄에 k + ( n - k * p ) / q, 둘째줄부터 p단어씩 k개 q단어씩 ( n - k * p ) / q개 출력한다. 이때의 시간복잡도는 대강 O(n)이라 할 수 있다. ii) Faster Solution 조금 더 빠른 방법이 없는가 생각해봤는데 디오판토..
Educational Codeforces Round 003. A, B, C, D A. USB Flash Drives ( Флеш-карты ) 문제 https://codeforces.com/contest/609/problem/A Problem - A - Codeforces codeforces.com 문제 요약 여러 크기의 usb가 있는데 최소한의 개수로 주어진 파일 크기를 옮기자 풀이 DP를 사용합니다 usb의 개수가 n이고 주어진 파일 크기가 m일 때, 각 크기 a0, a1, ..., a(n-1)에 대해 순차적으로 보면서 배열 s의 j번째 칸이 의미하는 바를 용량 j를 만들기 위한 최소 usb개수로 정의하면 됩니다. 식으로 나타내면 s[j]가 존재할 때 s[j+a] = min( s[j+a] , s[j] + 1 ) 모든 a에 대해 진행이 되었다면 s의 m번째 칸부터 끝까지 보면서 0..
Educational Codeforces Round 002. A, B, C, D A. Extract Numbers 문제 https://codeforces.com/contest/600/problem/A Problem - A - Codeforces codeforces.com 문제 요약 ,와 ;로 문자열들을 구분한 후 Integer일 경우 첫줄에 그 이외 문자열일 경우 둘째 줄에 각 문자열에 대해 , 로 구분하여 출력한다. (이때, NULL space도 ,와 ;로 구분되어있으면 공백인 문자열로 생각한다) 만약 출력할 문자열이 없다면 "-"를 출력한다. 풀이 strtok 대신 NULL space도 구분해주는 strsep을 사용한다. 한번에 여러개의 파라미터로 parsing하는 방법을 잘 몰라 중첩 for문을 사용하였다. isN이라는 함수에서 문자열이 정수인지 아닌지 판별하고 정수라면 첫번째..
Educational Codeforces Round 001. A, B, C, D A. Tricky Sum 문제 https://codeforces.com/contest/598/problem/A 문제요약 N값이 주어지면 2의 0, 1, ... , inf 제곱들에 대해 음수로 더하고 그 이외 수에 대해 양수로 더한 합을 출력해야한다. 풀이 1+2+...+2^(n-1) = 2^n - 1임을 알고 있을 때 전체에서 2의 제곱수들에 대해 두번 빼주면 된다. 즉, 수식으로 나타내면 다음과 같다. N(N+1)/2 - 2(2^[log_2{N}] -1) 소스코드 #include typedef long long ll; int main(){ int T; scanf("%d",&T); while(T--){ ll n, p=1; scanf("%lld",&n); for(int t=n; t; t>>=1, p1)-(..
대회 일정 SCPC - ~7/13(화) 접수 - 7/16(금)~17(토) 1차 예선 - 8/7 (토) 2차 예선 - 9/4 (토) 본선 UCPC - 7/16(금) 접수 - 7/31(토) 예선 - 8/4 (토) 본선
Codeforces Educational Round List ( 수정예정 ) 코포 연습을 위한 Codeforces Educational Round List Educational Codeforces Round 001 [ https://codeforces.com/contest/598 ] Educational Codeforces Round 002 [ https://codeforces.com/contest/600 ] Educational Codeforces Round 003 [ https://codeforces.com/contest/609 ] Educational Codeforces Round 004 [ https://codeforces.com/contest/612 ] Educational Codeforces Round 005 [ https://codeforces.com/contest/..