장's 개발생각

[개발생각] 최근의 고난한 대학교 4학년 일상( 3, 4월 회고 )

장아장 2023. 4. 20. 21:57

지금까지 있었던 일들을 정리해보자면, 

1. 모니터가 수명을 다했다

모니터 없이 노트북만 보면서 살다니...목이 미쳐버린다!

2. 구글 코딩테스트를 보았다. 

  • 문제를 정확하게 이야기 할 순 없어서 솔직하게 모든 것을 이야기할 순 없다. 
  • 1번의 경우, 문자열 관련해서 구현하는 문제였다. 
    • 구글은 생각보다 케이스가 많이 나왔다. 그래서 그런지 이런 저런 경우들을 다 생각해 볼 기회가 있었다. 
    • 모든 경우에 맞게 코드를 만들어내긴 한 것 같다. 
  • 2번의 경우, 경우의 수들을 고려해서, 가능한 최소값의 경우를 구해야 한다. 
    • 사실 모든 테스트케이스에 대해서 구현하진 못했다. 
    • 이걸 어떻게 처리하는게 좋을까 곰곰히 생각해보았지만 당시에는 이렇다할 최적의 방식을 찾지 못했다. 
    • 백트래킹으로 경우들을 만들어낸 후, 이 경우에 대한 값을 만들고 이 값중에 최소값을 구하는 방식인데, 경우를 만드는 방법이 쉽지 않았다. 
    • 비트마스킹을 이용하면 조금 더 수월하게 할 수 있겠다는 것을 뒤늦게 생각해냈다. 
    • 그래서 그런지 요즘 비트마스킹 알고리즘과 사용법을 조금씩 익히고 있다.

3. 네이버 코딩테스트를 보았다. 

  • 이건 비교적 최근에 풀었다. 
  • 알고리즘에 대해서 요즘 조금 접근이 뜸해졌었다. 그래서 그런지 몸이 덜 풀린? 알고리즘별 구조가 어떤지 머리속에 이론적으로만 담아있는 상태로 풀게 되었다. 
  • 총 4문제가 나왔는데 역시 싸피나, 다른 교육 프로그램 코딩테스트에 비해서는, 하나의 기능을 어떻게 구현하는지에 초점이 있다고 생각이 들었다. 
  • 그래서 그런지, 알고리즘을 보고 접근하는 방법이 달랐다. 
  • 교육 프로그램은 코딩테스트를 볼 때 '이게 어떤 알고리즘이지?' 라는 느낌이 강했다면, 이번 코딩테스트들에서는 전체적으로 '이런 알고리즘은 어떤 결과가 나올까?'를 생각하게 되었다. 
  • 그런 생각을 하다보니, 어떤 알고리즘에서는 어? 이렇게 푸는게 더 좋지 않을까? 라는 생각으로 코드를 바꾸기도 했다. 
    (사실 알고리즘을 잘 보는 법을 알려주는 사람들의 이야기를 들어보면, 그렇게 하면 망한다고들 한다. 망했다면 다음에 더 강하게 돌아오겠다)

실명이야 깃허브에 있으니까!(사실 실명도 아님)

하면서 느낀 생각은, 

  1. 알고리즘과 실제 프로젝트의 괴리감을 크게 느껴왔던 것 같다. 실제 웹 프로젝트가 아니더라도, 자바로 구현해내는 간단한 장난감(?)이라도 이런 시간복잡도와, 객체지향등을 고려해서 조금 더 가치있는 시간을 보내려고 노력해야 한다는 것
  2. 효율적인 구조를 생각해야 한다. 객체지향도 궁극적으로는, 더 독립적이고 협력하는 객체를 만드는 것이다. cs에서 싱글톤 패턴외에도 팩토리, 전략패턴을 알려주는 이유는 더 효율적인 방식이 있으니까 그렇지 않을까 라는 생각이 든다. '효율적이게 독립적이고 협력적인 객체지향 프로그래밍을 하자!' 라는 생각이 든다. 

 

CS와 조금 더 본질적인 자바, 그리고 수학에 대해서 조금 더 공부해야겠다. 

 

그럼...twenty thousand...🔥