brunch

You can make anything
by writing

C.S.Lewis

by lucent Nov 14. 2019

거부할 수 없는 유혹

바퀴 재발명하기

이번 주는 변명을 하자면 유난히 많이 피곤했다. 공부를 하기 위해 그래픽 카드도 새로 구매하여 설치하고, 배포와 테스트를 위해 AWS API를 공부하려 했지만 결과적으로 남은 것은 별로 없는 한 주.


툴 만들기

개인적으로 배포나 관리 툴을 만들고 있을 때면 유난히 바퀴를 재발명하는 기분이 들곤 한다. 꼭 맞는 툴이 없어서 만들기 시작한 것인데도 :(

이런 생각은 특히 “내가 지금 쉘 스크립트로 이런저런 툴을 열심히 조합해서 만들어도 될 것 같은 프로그램을 짜는 건 아닐까?” 같은 고민을 할 때 많이 떠오른다. 실제로 맞는 말일 수도 있으니까..

그렇지만 실제로 프로토타입을 만들고 나면 이런저런 아이디어가 떠오르고, 이로 인해 허튼짓이 아니었음을 깨닫게 되는 경우가 있다. 물론 만드는 과정 자체가 많은 것들을 배우고 이해하게 되는 계기가 되기도 하고. 이런 점 때문에 좀처럼 포기하지 않고 매달리게 된다.

이번 주의 바퀴 재발명툴 코딩은 내게 AWS에 대한 이해와 Python 프로그래밍에 대한 이해와 커맨드 라인 툴의 UI를 위한 고민을 해볼 계기를 주었다 :)


ICPC 2019 Seoul Regional Mirror

스포일러 주의!

토요일에는 ICPC 한국 대회의 미러 컨테스트가 열린다는 소식을 듣고 오랜만에 알고리즘 문제를 풀어 보았는데, 오래간만에 너무 재미있었다.


문제는 여기에​ 특히 흥미로웠던 문제는 B, D, G, K 였다. 너무 어려워 보이는 문제는 C, E, F.


B는 간선에 가중치가 있는 트리에서의 모든 리프 노드 쌍 사이의 (거리)**2의 합을 구해야 하는 문제인데, 기본적인 문제에 다양한 풀이가 존재해서 흥미로웠다. DFS와 BFS로도 조금씩 다르게 풀리는 등. 힌트는 (a+b)**2 식을 잘 전개해보는 것.


D는 사다리에서 지워도 결과가 바뀌지 않는 다리를 모두 지워 최소한의 다리만 남기는 문제이다. 사실 대회 중에는 다른 문제에 도전하느라 문제를 읽지 못했다. 아무래도 실전이 아니다 보니 풀고 싶은 문제부터 풀어 보느라 :(

그런데 어제 문득 생각해보니 굉장히 쉬운 문제였다. 힌트는 사다리 한 칸이 수열 내의 인접한 수를 교환하는 연산이고, 이는 버블 소트와 유사하다는 것.


G는 대회 마지막에 풀려했으나 시간이 없어 풀지 못했는데, 문제 정의가 재미있고, 함정이 많은 문제라 기억에 남았다. 힌트는 구간을 잘 나누는 동적 계획법을 떠올리는 것.


K의 문제를 읽으면 수식이 하나 보인다. 그런데 이 수식은.. K-means의 최적화 목적 함수이다. 힌트는 점의 개수가 100개로 작다는 것 :)


메타

저번 주에는 하루를 늦었는데, 이번 주에는 이틀을 늦었다. 이렇게 계속 미뤄지다가는 곧 한 주 전의 회고를 쓰는 건 아닐지 걱정이 늘어간다... 이게 다 저번 주에 다짐한 것들, 그러니까 매일 마이크로 회고와 커밋을 해서 기록을 남겨 주간 회고를 간단히 만드는 것을 지키지 못해서 그런 거라고 생각하고, 오늘부터는 꼭!! 실천을 해야지.

매거진의 이전글 Retrospective #9
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari