본문 바로가기

EDUCATIONAL

(3)
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 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)-(..

반응형