전체 글 104

코딩일지: Codeforces-Supercharger (예제 테스트 자동화 도구)

코드포스를 시작한 2019년부터 항상 언젠가 만들어야지... 하면서 미뤄오던 것이 있었다. 바로 코드포스 대회의 예제 입출력 테스트를 자동화해주는 도구이다. 대회 도중, 코드 로직을 수정할 때마다 코드포스 사이트의 입력을 복붙하는 과정이 꽤나 번거로웠고, 웹 크롤링을 통해 이 과정을 자동화해줄 수 있는 도구가 있다면 편리하겠다는 생각을 여러 번 했었다. 더불어 이 블로그에 대회 후기들을 꾸준히 남기면서, 후기 템플릿을 자동 생성해줄 스크립트 또한 있으면 좋겠다는 생각을 하게 되었다. 후기에는 각 대회 문항의 이름과 링크가 들어가야 하는데, 이를 일일이 복붙해서 링크 걸어주기가 꽤 귀찮기 때문이다. 얼마 전, 대회 후기를 작성하려던 내가 갑자기 위의 필요한 기능들을 구현해버렸다: https://github..

대회후기: Codeforces Round #704 (Div. 2)

저녁 6시의 대회다. 이른 시간에 대회를 치게 되니 느낌이 색다르다. 정신이 더 맑은 것 같기도? A: Three swimmers Trivial. AC: 3분 B: Card Deck 어렵지 않게 최대한 큰 lexicographic 값을 만드는 문제임을 알 수 있다. 따라서 간단한 greedy 문제가 된다. 덱에서 제일 큰 숫자 기준으로 옮기기를 반복하면 된다. AC: 9분 C: Maximum width 이런 형식의 문제에 약한 듯 하다. 앞으로 최대한 붙여서 완성할 때 필요한 길이 배열과, 뒤로 최대한 붙여서 완성할 때 필요한 길이 배열을 각각 계산해 둔다면, 각 위치의 간격을 최대화했을 때의 간격을 $O(1)$ 복잡도로 구할 수 있다. 앞으로 붙인 글자 $i$개, 뒤로 붙인 글자 $n - i$개일 때 ..

대회후기: Codeforces Round #703 (Div. 2)

자다 깨서 정신없이 시작한 대회. A: Shifting Stacks 블록은 오른쪽으로만 이동 가능하므로, 첫번째 stack부터 $i$번째까지 스택까지의 구간에 블록이 충분한지를 모든 $i$에 대해 확인해주면 된다. AC: 5분 B: Eastern Exhibition 택시거리 총합을 최소화시키는 문제인데, 택시거리 특성상 $x$축 방향 거리와 $y$축 방향 거리가 서로 독립적임을 알아차린다면 금방 끝나는 문제이다. 각 축에 대해서 값을 정렬한 후, 중앙값 하나 혹은 중앙값 두개 사이가 모두 최솟값이 된다. 하지만 나는 각 축의 거리가 독립적이라는 사실을 정말 정말 늦게 파악했고, 대회 마감 직전에 풀이를 코딩했다. 심지어 풀이도 앞서 서술한 정해와는 조금 다른데, 우연히 같은 결과가 나와서 맞았다. 대회 ..

대회후기: Codeforces Round #699 (Div. 2)

대회가 언제였더라? ㅋㅋㅋㅋㅋㅋ 2 주 미루다 이제서야 후기를 쓴다. 이번 후기부터는 자동 생성된 템플릿을 쓴다! 대회 링크를 입력해주면 문항들을 알아서 크롤링해와서 아래와 같이 각 문항 이름과 링크가 자동으로 걸리도록 코딩하였다. 매번 문제 이름들을 복붙하고 링크를 걸어주는 것이 귀찮아서 후기를 미루게 됐었는데, 이제는 정말 간편하게 후기를 쓸 수 있게 되었다. A: Space Navigation 정말 간단한 문제임에도 불구하고 생각을 여러 차례 잘못하는 바람에 많은 지체가 있었다. AC: 10분 B: New Colony 잠시 살펴보면 그냥 구현 문제임을 확인할 수 있다. $k$ 값이 매우 큰 경우는 직접 확인할 필요가 없기 때문이다. AC: 20분 구현이 꼬여서 세번이나 틀렸다. C: Fence Pa..