본문 바로가기

Competitive Programming

(42)
Codeforces Round 941 (Div. 1) Dashboard - Codeforces Round 941 (Div. 1) - Codeforces codeforces.com 진짜 오랜만에 코포 포스팅이다. 현생에서 큰 웨이브를 넘겼고, 슬슬 복귀를 해야겠다 싶어서 가볍게 쳐봤다. Prob. A깊이 생각해보지 않아도, 먼저 선택권이 주어지는 쪽에게 우세가 있다는 것을 알 수 있다. 이를 확인하기 위해 $a_i$를 정렬하고 인접한 값들의 차를 보면 된다. Prob. B일단 이진법을 써야 함은 자명하고, 여기서 열심히 구성해주면 된다. 나는 $k$의 MSB를 $x$라고 했을 때, $x$를 빼고 $k-x$를 넣고 $k+1$을 넣고 $k+2x$를 넣었다. 딱히 전략은 없고 $k$가 만들어지는 것을 피하면서 최대한 많은 수를 커버할 수 있도록, 그리고 현재 못 ..
Educational Codeforces Round 161 (Rated for Div. 2) Dashboard - Educational Codeforces Round 161 (Rated for Div. 2) - Codeforces codeforces.com D, E가 쉽게 나와서 나름 잘 쳤다. F도 접근은 다 했는데 디테일에서 부족한 부분이 있었다. Prob. A사실 얘는 아직도 지문을 이해하지 못했다. 그냥 예제만 보고 가능한 코드를 다 짜보니 두 번째에서 맞았다. Prob. B뽑은 세 수 중 가장 큰 것이 다른 두 수보다 strict하게 크면 안 된다. 그래서 세 수가 모두 같거나, 두 수가 같고 남은 수가 그것보다 작은 두 가지 경우만 가능하다. 같은 수를 편하게 처리하기 위해 map을 사용해서 풀었다. Prob. C$u$에서 $v$로 갈 때 항상 일직선으로 이동하는 것이 최선이다. 그리..
Codeforces Round 917 (Div. 2) Dashboard - Codeforces Round 917 (Div. 2) - Codeforces codeforces.com 아직 작심삼일이 지나지 않았기 때문에 언레지만 참가했다. 초반부터 쭉 말렸지만 문제가 어려워서 퍼포는 괜찮게 나온 듯. Prob. A 음수의 개수, $0$의 개수, 양수의 개수를 구하고 음수를 만들 수 있는지, 0을 만들어야 하는지에 따라 경우를 나눠주면 된다. Prob. B 어렵다. 해시 써야 하나 한참 고민하다가 문자열의 길이를 고정한다고 생각해보니 풀이가 나왔다. 만들 문자열의 길이를 $m$이라 하면 뒤의 $m-1$개의 문자는 고정되고 앞에서 아무거나 하나 선택할 수 있다. 그래서 뒤에서부터 스위핑하며 개수를 관리하고 답을 구할 수 있다. 문제는 좋은데 이게 B? Prob. ..
Pinely Round 3 (Div. 1 + Div. 2) Dashboard - Pinely Round 3 (Div. 1 + Div. 2) - Codeforces codeforces.com 8개월 만에 코포를 쳤다. 지금껏 갖은 핑계를 대면서 복귀를 계속 미루고 미뤘었는데, 이제 진짜 레드 갈 때까지 멈추지 않는다. 개인적으로 조금의 운을 탄다면 레드를 갈 가능성이 있다고 보고 있고, 이번 방학 내에 달성하는 것이 목표긴 하다. 이번 컨테는 평타는 쳤지만 오랜만에 해서 그런지 미숙한 부분이 많아서 아쉬웠다. Prob. A 잘 생각해보면 원점 기준 상하좌우로 모두 움직여야 한다면 불가능하고, 나머지는 가능하다. Prob. B 자연스럽게 2로 나눈 나머지를 생각할 수 있고, 2로 나눈 나머지가 한 종류라면 4로 나눠보면 두 가지로 갈라질 수 있고, 그게 안 되면 8..
Codeforces Round #854 by cybercats (Div. 1 + Div. 2) Dashboard - Codeforces Round #854 by cybercats (Div. 1 + Div. 2) - Codeforces codeforces.com Rated Round를 오랜만에 하는 거라 걱정했는데, 다행히 선방했다. Prob. A 지문이 도저히 해석이 안 돼서 예제 보고 찍어 맞췄다. 풀이는 그냥 구현이다. Prob. B 처음에 1이 존재하면서 1이 아닌 수도 존재한다면 불가능하고, 나머지 경우에는 가장 큰 수를 가장 작은 수로 나누는 것을 반복하면 언젠가 같아진다. Prob. C C 주제에 더럽게 까다롭다. 일단 정렬하고 앞에서부터 볼 때 같은 문자가 두 개 있다면 양 끝에 붙여주는 게 최적이다. 그렇지 않고 가장 작은 문자가 한 개 존재한다면 두 가지 경우로 나눠야 한다. 이 ..