티스토리 뷰
에듀 코포인데 레이티드라고 해서 부캐로 참가해봤다. 5문제 풀 수 있었을 것 같은데 D번에서 엉뚱하게 실수해서 그거 버그 찾다 결국 찾지도 못하고 3문제 풀고 끝나버렸다 ㅠㅠ 매번 느끼지만 코드를 정확하게 짜고 잘 검증하는 능력이 부족한 것 같다. 예외 케이스를 좀 더 꼼꼼히 생각하고 프로그램의 정당성을 제대로 증명하는 연습을 해야겠다.
A. Chess For Three
그냥 문제에서 요구하는 조건에 맞춰서 구현했다. 현재 게임 중인 플레이어 / 관찰중인 플레이어 나눠서 바뀌게 해주고 조건 안 맞으면 틀리게. 4분 8초에 솔브
B. Beautiful Divisors
문제에서 요구하는 divisor 개수가 적어서 그거 그냥 미리 계산해두고 조건 맞춰서 검사해보면 된다. 7분 30초에 솔브
C. Rumor
각 컴포넌트 단위로 나눠서 값 구해주면 된다. 12분 57초에 솔브
D. Credit Card
문제 이해도 빨리 했고 풀이도 바로 떠올렸다. 아침에는 돈을 더 넣을 수만 있기 때문에 전체 상한은 반드시 증가하는 방향으로 움직이고, 따라서 돈을 체크하는 시점에 돈을 넣을 수 있는 최대치는 d - (이 시점 이후 내 돈 최댓값)이 된다. 또 돈 넣는 횟수를 최소한으로 해야하기 때문에 꼭 넣어야만 할 때 최대한 많이 넣어야 한다. 따라서 저 최대치만큼 넣고 그래도 돈이 0보다 작으면 불가능, 아니면 계속 진행 해주면 풀리는 간단한 그리디 + 부분합 문제였는데, 처음에 불가능한 케이스 체크할 때 애초부터 가진 돈이 d 이상이 되는 경우가 있으면 -1 출력해주는 부분에서 실수를 했다. 부분합 계산하면서 하다 보니 첫번째 원소에서 d이상인 경우를 빠트려버림. 진짜 멍청한 실수인데 이걸 못 잡아서 결국 못 풀었다 ㅠㅠ 처음에 채점 큐 밀려서 제출해놓고 E보다 D보다 하다보니 집중력이 떨어졌던 것도 있지만 어쨌든 실수는 내 잘못이니..
첫 제출이 29분 33초였고 그 때 버그가 하나 있었는데 채점큐가 10분 넘게 밀리는 바람에 그걸 체크한 시점이 42분 30초. 큐도 안 밀렸고 저 실수도 안했다면 대충 정상적으로 풀이 생각하고 코드 짜는데 걸린 시간은 25분 쯤이었을 것 같다. 실수 제외하고도 여전히 풀이 + 구현이 그다지 빠르지 못해서.. 좀 더 연습을 해야할 것 같다.
E. Counting Arrays
1을 y개 놓고 x의 약수를 뿌리자는 것 까지는 생각했다. 겹쳐서 뿌리는 거 하려면 중복 조합쓰면 될려나? 정도까지도 떠올렸고. 근데 D에서 말리는 바람에 손을 못 댔는데 ㅠㅠ 그게 아니었다면 분명히 풀 수 있었을 문제였다고 생각한다. 풀이도 거의 근접했고 구현을 못 할 문제도 아니니까. 다만 D 큐에 넣어놓고 풀이를 저만큼 떠올리는데 시간을 너무 많이 썼다. 대충 30분 걸린것같은데 아마 제대로 다 구현하고 하는데 1시간은 걸렸을 듯. 그러면 실수 없었을 경우 A~E까지 푸는데 1시간 40분정도 걸렸을 거라는 뜻인데 너무 늦다. 이런 조합 경우의 수 문제가 여전히 안 익숙해서 풀이 떠올리고 코드 짜는데에 아직 시간을 많이 잡아먹는다. 이런 문제들은 패턴이 비슷하다는 느낌인데 좀 더 연습을 하면서 실력을 쌓아야할 것 같다.
'Codeforces' 카테고리의 다른 글
Educational Codeforces Round 41 (1) | 2018.04.05 |
---|---|
[875D] High Cry (0) | 2018.01.12 |
[883J] Renovation (0) | 2017.10.22 |
[662B] Graph Coloring (0) | 2017.10.18 |
[2017-10-16] Codeforces Round #441 (Div. 2) (0) | 2017.10.17 |