본문 바로가기

코드포스_Code Forces

(10)
[코드포스/Contest] Codeforces Round #653 (Div. 3), A ~ D #653 후기 문제 A ~ C는 쉬웠던 것 같고, D번이 어떻게 풀어야할지 감도 안잡혀서 오래걸렸던 대회였다. DIV3 대회여서 그런지 딱 실력만큼 푼 것 같다. #653 문제 A번 Required Remainder - 성공 더보기 정수 x, y, n이 주어진다. 0 x >> y >> n; int m = (n - y) / x; cout tc; while(tc--) { int n; cin >> n; if(n == 1) { cout s; for(int i = 0; i < n / 2; i++) { if(s[i] == '(') stkl.push(true); else if(s[i] == ')') { if(stkl.empty()) { cntl++; } else { stkl.pop(); } } } for(int i ..
[코드포스/개별문제] CF#623 C번 Restoring Permutation 코드포스 #623 C번 - Restoring Permutation 1부터 2n까지의 정수를 각각 하나씩 가지고 있는 정수 배열 a가 있다. 배열 b는 b[i] = min(a[2i - 1], a[2i])로 정의된다. 배열 b가 주어졌을 때, 배열 a를 출력하시오. 1, 2, ..., 2n의 정수가 각각 사용 되었는지 확인하고, 입력받은 배열 b의 원소에 대해서, 가장 가까운 큰 수(b + 1, b + 2, ...)를 확인한다. 만약 현재 값보다 큰 값이 없으면 b[i]를 정의할 수 없기 때문에 불가능한 경우이고, 만약 가능하다면 해당 값을 체크처리하고 출력한다. 아래는 제출코드이다. #include // 2의 제곱수 판정 #define POW2(X) (X) == ((X)&(-(X))) // 기본설정 typ..
[코드포스/개별문제] CF#623 B번 Homecoming 코드포스 #623 B번 - Homecoming 집에 가기 위한 길이 있다. 길은 걸어가거나, 버스 또는 전차를 타고 이동할 수 있다. 입력으로 교차로의 상태가 주어지는데, A는 버스로, B는 전차로 이동할 수 있는 길이고, 버스와 전차는 서로 갈아탈 수 있다. 각각의 티켓은 가격을 지불해야 하고, 현재 가지고 있는 돈이 주어진다. Petya가 현재 가진 돈으로 집으로 돌아가기 위해 걸어가야 하는 최소 거리를 구하시오. 간단한 이분탐색 문제이다. 걸어가서 처음 탑승하는 정류장의 위치를 이분탐색을 통해 검색한다. 각각의 탐색에서 집으로 가기위한 티켓의 총 비용을 계산한다. 만약 돈이 부족하다면 더 많이 걸어가야 하고, 돈이 충분하다면, 최소 거리가 있을 수 있으므로 더 가까운 거리에서 탐색한다. 아래는 제출..
[코드포스/개별문제] CF#623 A번 Dead Pixel 코드포스 #623 A번 - Deal Pixel a * b 픽셀의 모니터가 있다. 모니터 위 (x, y)좌표에 죽은 픽셀이 있다. Polycarp는 죽은 픽셀이 포함되지 않은 최대 크기의 직사각형을 구하려고 한다. 그때의 직사각형의 크기를 출력하시오. 먼저 문제를 그림으로 생각해보자. 그림과 같이 고장난 부분이 있다면, 직사각형의 최대 크기는, 고장난 부분을 기준으로 상/하/좌/우에 있는 네개의 직사각형의 크기 중 최대값일 것이다. 즉, 색칠한 네개의 직사각형의 크기중 최댓값을 출력하면 된다. 아래는 제출코드이다. #include // 2의 제곱수 판정 #define POW2(X) (X) == ((X)&(-(X))) // 기본설정 typedef long long ll; using namespace std;..
[코드포스/Contest] Codeforces Rounde #651 (Div. 2), A ~ C #651 후기 Div2의 D번의 벽을 크게 체감한 대회였다. 대회 이후 문제 레이팅을 확인해봤는데 무려 2000점인걸 보고 확실히 차근차근 실력을 키우지 않으면 우연히라도 높은 난이도의 문제를 풀지 못할거라고 생각이 들었다. 그래도 다행인건, A ~ C번과 같은 비교적 쉬운 난이도의 문제는 어떻게든 풀 수 있게 실력이 조금은 오른것 같다고 느꼈다. #651 문제 A번 Maximum GCD - 성공 더보기 정수 N이 주어진다. 1 tc; while(tc--) { int a; cin >> a; cout tc; while(tc--) { int n, e = 0, o = 0, cnt = 0; cin >> n; int arr[2 * n + 1] = {0}; vector even; vector odd; for(int..
[코드포스/Contest] Codeforces Round #640 (Div. 4) #640 후기 처음 참여한 Div4 코드포스여서 난이도나 이런것들에 대해서 궁금하기도 하고, 많이풀수있을까 기대되기도 했던 코드포스였다. 대회때는 D번까지 풀었고, 이후 생각나서 E번부터 G번까지 마저 풀었는데, 다시 풀어보면서 느낀점은, Div4의 E번부터 G번문제도 생각보다 풀만한 문제구나 느꼈다. #640 문제 A번 Sum of Round Numbers - 성공 더보기 양수 x가 d000...0 형식인 경우 해당 수는 둥글다(Round)라고 한다. 양수 n을 둥근 수의 합으로 나타냈을 때, 둥근 수의 개수와 둥근 수를 출력하시오. 문제에서 둥근 수의 예를 들어줬는데, 1000, 100, 10, 1과 같이 맨 앞자리수가 1 ~ 9인 자연수이고, 그 뒤에 0이 0개부터 n개 있는 수가 둥근 수이다. 즉..
[코드포스/Contest] Coderforces Round #648 (Div. 2) #648 후기 A부터 C번까지는 구현보다는 아이디어를 떠올리는게 중요했다고 생각이 드는데, 내가 이런 부분에서 약점을 가지고 있다는 것을 다시 알게 되었고, D번도 다른 방법이 있을 수 있겠지만, 구현능력이 좋았다면 풀 수 있었지 않았을까 하는 생각이 드는 내 한계를 느낀 아쉬운 대회였다. #648 문제 A번 Matrix Game - 성공 더보기 n * m 크기의 행렬이 있다. 행렬은 0 또는 1로 초기화 할 수 있다. matrix[i][j] == 1 이란 뜻은 해당 행렬에 i번째 가로줄과 j번째 세로줄에는 다른 1인 값이 들어올 수 없다는 것을 의미한다. Matrix Game은 Ashish와 Vivek이 서로 한 번 씩 행렬을 1로 바꿀 수 있을 때, 더이상 바꿀 수 없는 사람이 지는 게임이다. 행렬이..
[코드포스/Contest] Codeforces Round #647 (Div. 2) #647 후기 평소에 잘 쓰지 않는 XOR 연산이나 2진수 연산이 나와서 부족함을 많이 느낄 수 있는 대회였다. 이런 부분을 보완해야겠다고 생각이 들었다. #647 문제 A번 Johnny and Ancient Computer - 성공 더보기 정수 a, b가 주어진다. 해야 할 일은 a를 b로 바꾸는데 다음과 같은 작업을 시도할 수 있다. a에 {2, 4, 8, 1/2, 1/4, 1/8} 중 하나를 곱한다. a를 b와 같게 만들기 위한 최소 횟수를 출력하여라. 곱할 수 있는 수는 모두 2의 제곱수이다. 즉 a * (2^n) = b인 n값을 찾는게 문제의 폭표이다. 계산의 편의성을 위하여, b가 a보다 크다고 가정하면, 2^n = b / a 인 n을 찾아야 하고, n이 정수여야하므로 b / a가 정수이고, ..