본문 바로가기

Competitive Programming/Codeforces

Codeforces Round #696 (Div. 2)

 

Dashboard - Codeforces Round #696 (Div. 2) - Codeforces

 

codeforces.com

 

아쉽...

 

Prob. A

예제만 봐서는 문제 이해가 힘들어서 지문을 쓱 읽으니 단순 그리디 짜는 문제임을 알 수 있었다. 그런데 쉽게 짜는 방법이 생각나지 않아서 if문 8개 박다가 7분이나 썼다(머리가 나쁘면 손이 고생한다)... 빨리빨리 구현하고 넘어가면 되는 문제였는데 너무 여유롭게 코딩했다.

 

Prob. B

(정수론 너무 좋다...ㅎ) 약수 5개 이상이 최적 해가 아니라는 것을 빠르게 찾고, pq, p^3 중 pq가 그냥 자명해 보여서 에라토스테네스의 체 구현하고 p, q 찾아주면 끝...인데 에라토스테네스의 체 구글링하느라 늦었다. 이제 외웠으니 됐지 ㅎ

 

Prob. C

얘가 내 점수 깎아먹은 주범이다. 문제가 어렵기도 했지만 구현이 망한 문제이다. 한 10분 정도 별 짓을 다해보다가 최댓값을 찾으면 재귀적으로 해결할 수 있다는 걸 관찰했다. 이때 C를 해결한 사람이 50명 정도였다. 어떤 자료구조를 써야 할까 고민하다가 vector에 erase만 해주면 될 것 같아 그대로 구현했다. 이 것도 구현이 쉽지는 않았는데, 출력할 vector를 pair로 만들다가 실수할 뻔했다. 구현이 끝나고 예제를 넣었는데, 마지막 TC가 틀려서 디버깅해보니 처음 x값을 결정해줘야 한다는 당연한 사실을 빼먹었었다. (최댓값 계속 빼다가 남는 걸로 x를 만들었었음.) 이를 반영해 다시 구현하는 것도 꽤 까다로웠다. vector에 erase, insert를 박는 식으로 짰는데, 예제를 넣으니 런타임 에러가 발생했다... 처음 써본 insert에 문제가 있나 싶어서 구글링을 하고, 코드를 정말 많이 바꿔봤는데 결과는 똑같았다. 이러다가 대략 한 시간이 훅 갔다(...) 결국 오류를 찾았는데, 처음 잘못 짠 코드에서 안 바뀐 부분이 있었다... 코드를 직관적으로 다시 짜고 제출하니 AC. 하지만 너무 늦었다.

 

Prob. D

30분밖에 남지 않은 상황에서 내가 D를 풀 수 있을까 의구심이 들었지만, 일단 문제를 봤다. D번인데도 지문이 간단해서 풀 의욕이 생겼고, 바로 코딩을 시작했다. 생긴 게 간단해서 dp문제라는 것을 쉽게 떠올릴 수 있었고, 먼저 양방향으로 탐색했을 때의 가능 여부를 판별해줬다. 그런데 도저히 다음 단계가 생각나지 않아서 그냥 5분 남기고 포기했다. 나중에 보니 임의의 두 pile을 스왑할 수 있다는 걸로 조건을 잘못 읽어서 더 어려웠던 것 같다. 조금 아쉬움이 남지만, 번역기를 너그럽게 용서해주기로 했다.

 

 

전체적으로 문제가 깔끔해서 풀 맛이 나는 라운드였고, 구현력이 부족하다는 것을 다시 한번 깨달았다. 

이렇게 봤는데도 블루 퍼포가 나오는 걸 보니 조금 신기했다...ㅎ