• Google Code Jam 2020 Qualification Round - Indicium

    올해 퀄 라운드의 마지막 문제라틴 스퀘어를 만드는 문제였다. 라틴 스퀘어를 만드는 것 자체는 어렵지 않은 문제이지만, 이번에는 주 대각선의 합(trace)이 특정한 값이 되어야 한다는 조건이 있어서 상당히 어려웠다.

    Read on →

  • C / C++ 메모리 디버깅

    C나 C++로 프로그램을 작성할 경우, 아무리 신경을 써도 메모리 접근에서 예상치 못한 버그가 발생하고는 한다. 해제한 메모리를 다시 이용하거나(use after free), 할당한 공간을 넘어서 접근한다거나(heap / stack overflow).. 그렇다고 메모리 해제를 소극적으로 하다가는 해제되지 않고 메모리 누수가 일어나서 또 다른 문제를 일으킨다. 물론 이를 해결하기 위한 방법으로 가장 추천하는 것은 Rust처럼 안전한 언어를 이용하는 것이지만, 어쩔 수 없이 C / C++을 이용해야 하는 경우, 디버깅에 도움을 주는 도구를 적극적으로 이용하면 비교적 안전한 코드를 작성할 수 있다.

    Read on →

  • Google Code Jam 2019 Round 1C

    GCJ R1C는 안 망했다!! 다행히 Round 2에 진출 가능한 등수를 받았다. C 라지를 고민하다가 결국 스몰만 풀고 던진 다음 나머지를 급하게 풀어서 A, B는 라지까지 맞았다. 야호! 대회 난이도를 돌아보면, C는 그런디 정리1를 알면 쉽지만 모르면 풀 수 없는 문제였고, B는 올해 출제된, 즉 R1AR1B, 그리고 QR에 나온 인터랙티브 문제들에 비해 굉장히 쉬웠으며, A는 문제만 잘 해석하면 정말 아무렇게나 풀어도 라지까지 맞는 낚시 문제였다.

    Read on →

  • Google Code Jam 2019 Round 1B

    GCJ R1B는 새벽 1시에 열려서 잠을 포기하고 참가! 했지만.. 컨디션 조절 실패로 (변명) 이번에도 Round 2 진출에 실패하고 말았다. 전체적인 난이도는 A가 너무 쉽고, B가 생각보다 어려웠으며, C는 구현이 상당히 복잡한 문제였다.

    Read on →

  • Google Kick Start 2019 Round B

    오늘 오전에는 Kick Start Round B가 있었다. 난이도는 Round A처럼 역시 어려웠다(ㅠㅠ). 다만 각 문제가 다이나믹 프로그래밍, 그리디, 그리고 라인 스위핑 등 기본적인 알고리즘의 의미를 충실하게 고민하면 풀 수 있는 구성으로, PS를 다시 연습하기에 훌륭한 대회였다.

    Read on →