✏️ 2022-11-16 Today I Learn

@mitoconcrete · November 16, 2022 · 7 min read

[회고] 221116

  • "죽을 때 까지 코딩하는 법" 1회 완독
    "죽을 때 까지 코딩하는 법" 을 완독했다. 정말 소중한 글귀들이 너무 많다. 길게 갈 수 있는 개발자가 되기 위한 마인드셋과 환경을 찾는법, 그리고 어떤 환경에서 일을 해야할지에 대한 정보를 얻을 수 있었다. 또한, 책 자체가 읽기 부담스럽지 않고, 정말 이야기하듯이 적은 책이라 재미있고, 부담없이 다가왔다. 일단 1회독 했으니 여유 될 때 2회독 3회독 해서 이 안에 있는 글을 체득해야겠다는 생각을 했다.
  • 전 팀원들의 발전을 보다
    직전 팀원 분들이 알고리즘 문제를 푸는 것을 너무 두려워하는 것이 느껴져, 전 날 늦게까지 함께 문제를 풀었었다. 어쩌다 보니 코딩쇼가 되었지만, 팀원 분들이 공통적으로 알고리즘을 접했을 때 어디부터 손을 대야 할 지 감을 못잡으시는게 보여, 짧은 실력이지만 코딩인터뷰 하듯이 말하면서 내가 푸는 과정을 공유했다. 그동안 깨달은 점을 공유드리면서 문제를 풀었는데 짚어드린 순서는 다음과 같다.

    1. 문제를 먼저 완벽히 이해한다.
    2. 개발 용어를 배제한 현실 언어로, 문제를 풀기위한 큰 순서를 정리한다.
    3. 큰 순서를 기반으로 필요한 도구들을 구글링하여 리서치 하여 세부 순서를 결정한다.
    4. 결정한 문제 풀이 순서대로 코드를 작성한다.

    많은 팀원분들이 반복문, 조건문에 대한 사용에 부담을 느끼고 계신게 느껴졌고 '도구를 잘 사용하는 것이 아닌 순서를 잘짜야 어디에 적절한 도구를 사용 할 수 있을지 이해 할 수 있다.'라는 메시지를 전달드리고자 노력했다.

    드디어 대망의 타임어택 당일, 문제난이도는 어렵지않았다. 다만, 다른 팀원분들은 어려움을 겪으시는 것 같았다. 멘탈점검을 위해 DM을 드렸는데 다들 조금씩 문제를 풀어나가고 계셨고, 팀원들이 성장한게 보여서 너무 뿌듯했다.

    팀원들의 피드백

  • 애증의 삼성문제를 드디어 풀어내다.
    알고리즘 수업에서 마지막에 전달받은 삼성문제를 풀어냈다. 아직은 혼자 힘으로 풀기엔 벅차서, 다른 사람들의 풀이법을 보았다. 하지만, 내가 참고한 것은 그들이 어떻게 문제를 이해했는지 였지, 로직을 베끼진 않았다.

    이 고집 때문에 한 문제를 2일간 푼거긴 하지만, 따라치기로 영혼없이 옮겨적는 것이 나한테 아무 영향을 줄 수 없다는 것을 깨달은 뒤로는, 다른사람의 풀이법을 참고는 하되 내가 이해 할 수 있는 로직/남이 봐도 깔끔한 로직으로 어떻게 바꿀 수 있을까를 끊임없이 고민하고, 그것이 확정되는 순간 코드를 작성하고 있다.

    이해안되는 점에 대해 끊임없이 고민하고, 필요한 것은 적용하고, 필요하지 않은 것은 쳐내면서 온전히 내가 이해 할 수 있는 코드를 작성했다. 여러번 갈아치웠지만, 그 과정에서 계속적인 필터링이 일어나 최종본은 정말 군더더기 없이 로직이 작성되었다. 내가 초반에 설계한 순서에 맞고, 레퍼런스코드보다 이해하기 쉬웠기 때문에 모두 작성을 한 뒤 매우 뿌듯함을 느꼈다. 이런 코드는 정답인 경우가 많다.

    삼성, 카카오 등의 문제를 풀게 되면서 깨달은 점이 몇가지 있다.

    1. 문제를 정말 잘 완전히 이해해야한다.
    2. 중간에 이해하기 힘든 지문이 있는경우, 그걸 완벽히 이해한 뒤 진행해야 의도에 맞는 답을 얻을 수 있다.
    3. 문제풀이가 결정되면 최대한 천천히 그리고 꼼꼼히 코드를 작성해야한다. 단, 코드를 작성하다 흐름을 놓치면 모두 지우고 다시 시작하는 것이 더 좋은 경우가 많다. 지우지 않고 진행하면 스파게티가 될 확률이 높다.
    4. 문제풀이가 결정되도, 머릿속에서 주어진 예제가 어떻게 흘러가는지 상상해보고 그 흐름이 확실시 된 순간 코드를 작성하는게 성공률이 높다.
    5. DFS, BFS에서는 visited를 사용해야한다.

    과거 수학문제를 풀던 시절이 생각났다. 처음 풀 때 굉장히 오래걸린 문제는 같은 유형을 풀고 익숙해지면 기하급수적으로 푸는 속도가 줄어든다. 알고리즘문제도 수학문제를 푸는 것과 별반 다를 것이 없다는 것을 깨달았다. 두려워하지말고, 문제에 직면하고 풀어나가는 과정을 받아들이고 즐기자!

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.