Skip to content

2023-08-15#

<< 2023-08-13 재귀와 퀵소트 삽질 | [[2023-08-16]]>>


📅 2023-08-15 Daily Briefing#

🎵 오늘의 추천곡#

Something Good - Alt - J 라이프 이즈 스트레인지 게임으로 알게 된 밴드. 차분한 멜로디와 매력적인 목소리의 조화, 추상적인 메시지를 담고 있는 뮤직비디오까지 상상력을 자극시켜준다.

🌜 어제는...#

2023-08-13 재귀와 퀵소트 삽질 | 늦잠, 퀵소트, 정렬 공부. 기억나는 이슈가 그것 말고는 딱히 없다.

🙌 지금은...#

오전과 오후를 내가 알고있는 지식을 공유하는 데에 쏟아부었다. 다들 어려워 했던 Z {1074} {boj} {재귀} 문제와 N-Queen {boj} 문제를 면접관이 앞에 있다고 상상하며 단계적으로 설명해주었다. 아는 것이 있다고 그것을 설명할 수 없다면 그건 제대로 아는 것이 아니라는 것은 정말 맞는 말이다. 분명 문제를 풀었고 확실하게 알았다고 생각했음에도, 함수 스택에 따라 바뀌는 변수값을 화이트보드에 추적하는 데 약간의 어려움을 겪었다.

🚀 내가 달성하고자 하는 것들은...#

월요일에 잔뜩 쌓아두었던 문제리스트를 거의 풀지 못했다. 따라서 내일은 중요한 문제들을 제외하고 문제들을 타이머와 함께 빠르게 풀어나갈 계획이다.

👎 오늘 나에게 닥친 어려움은...#

문제리스트를 왜 거의 풀지 못했느냐는 질문에 스스로 답하자면, '힙' 구현에 너무 많은 시간을 쏟았기 때문이었다. [[1181 단어 정렬 {boj} source code {python} {heap}|1181 단어 정렬]] 문제는 단순히 정렬의 방식만 수정하는 key만 잘 정의하면 되는 문제였는데, 욕심이 생겨 힙 클래스를 구현하기로 정했기 때문이다. 이전에 swea 알고리즘 특강때 힙 자료구조를 C++로 작성한 적이 있었기 때문에 그렇게 어렵지 않을 거라고 생각한 것은 오산이었다. 알고리즘의 기조를 파악하면 뭐하나, 인덱스를 벗어나고, 정렬 순서를 반대로 해놓고 (최소힙이라 생각했는데 최대힙이었다) 원하는 결과가 안 나오자 기분부터 상했기 때문이다. 기분이 상하는 대상은 컴퓨터가 아니라 나라는 사실을 인지하자.

어제의 교훈을 기억하며 수도코드를 종이에 먼저 작성한 뒤에 코드로 옮겼으나, 종이의 내용을 개무시하고 구현 내용을 멋대로 바꿔나가기 시작한 점이 오늘 이슈의 화근이었을 것이다. 생각하지도 않았던 TypeVar를 꺼내어 일반화 프로그래밍을 시도하기도 했고 C++에서의 정적배열을 일반 List로 바꾸면서 변경사항이 다른 코드들로 전파되었기도 했다. 따라서 내가 할 일을 스스로 늘린 셈이었다.

더 좋은 코드, 더 일반화된 코드를 작성하는 것도 좋지만 솔직히 말해서 나는 아직 그런 역량이 아니잖아. 그리고 진짜로 제대로 된 코드를 만들 것이었으면 아예 라이브러리화 시켜서 오픈소스로 공개하지 그래? 제한시간이 있는 문제를 풀 때 힙을 처음부터 구현하는 건 의미가 없다. heapq 라이브러리가 따로 힙 클래스를 제공하지 않고 MutableSequence를 가지고 전역적으로 heapify, insert, peek, pop 등의 연산을 제공하는 것은 그럴만한 이유가 있을 것이다.


📝 Notes#


Pending ⌛.canvas


Notes modified today#

List FROM "" 
WHERE striptime(date(file.frontmatter.updated)) = date("2023-08-15") 
SORT file.mtime asc