본문 바로가기
IDEA

자료구조와 글쓰기

by 로햐 2021. 12. 28.

요즘은 C언어로 자료구조를 맛보고있다. 미뤄뒀던 백준 문제풀이도 재개. 

오랜만에 머리써서 재밌다! 조만간 C언어 정리하면서 자료구조도 간단하게 정리할 예정.

사실 java 하면서 계산을 전부 컴퓨터에게 맡겨버렸었다. 머리를 비우고 아무말대잔치 코드를 짰는데, 낭비라는 사실을 외면한 면도 없지않아 있다. 왜냐면 쉽거든.
하지만 그 와중에도 메모리를 조금 더 줄일 수 있지 않을까, 코드 길이를 줄일 수 있지 않을까 하는 고민을 했었다. 내가 알고있는 선에서만 바꾸곤 했으니 미미한 차이만 보이곤 했는데, 자료 구조를 공부하면서 대격변이 일어났다.

 

내가 가장 사랑하던 for문과 거리두기를 시작했다. for문은 무적이 아니다.
시간 복잡도를 고려하여 어떤 알고리즘을 선택해야하는가.
어떤 조건을 먼저 배제할 것인가. 어느 부분을 분리할것인가.

 

원리를 이해하고, 더 좋은 방법이 있다면 그 방향으로 나아가야한다. 메모리와 기본적인 원리조차 생각하지 않고 코드만 타이핑 하는 건, 코끼리 다리를 더듬으며 통나무라고 우기는 것과 다르지 않다.


때때로 사람들이 내 풀이를 보면 알림이 오는데, 그게 그렇게 기분이 좋고 기다려지더라.
내 코드를 봐줘...! 내 예쁜 코드를 봐줘! 여기 진짜 이부분 잘 짜지 않았어?


프로그래밍은 글쓰기라는 생각은 여전하다. 글쓰기도 기술이 필요하다. 단어를 공부하고, 비문이 되지 않도록 검토도 하고, 함축을 위해 다양한 표현을 사용한다. 이렇게 한 문장, 한 문단, 하나의 글을 쓰기 위해 내가 어떤 표현을 사용할 것인가. 이런 과정을 익히는 것이 자료구조 공부라고 생각한다.

여러가지를 다 할 줄 알면서 최선을 선택하는 사람과 한가지 방법으로만 가능한 사람이 보여줄 수 있는 퍼포먼스는 다르다. 조금 더 간결하게, 조금 더 가독성있게, 조금 더 자원을 아끼며 프로그래밍 하는 것. 깔끔하고 유기적으로 연결되어 뻗어있는, 잎맥같은 모양. 그 자체로도 아름다운 코드다.