Til Home

2020-06-05-TIL

Fact

  • 오늘은 JavaScript 로 3문제를 풀었다. 하나는 어제 효율성을 통과 못했던 구명 보트를 다른 사람 풀이 참조 해서 풀었다. 탐욕은 그대로 바보같이 탐욕적으로 풀어야한다. 앞에 있는것만 보고 미래를 생각하지 않는 풀이법이다. 그 다음 문제는 단속 카메라를 풀었다. 이번에는 찐 탐욕적으로 당장 보이는 것 부터 처리를 해서 성공적으로 풀었다. 마지막으로 섬 연결하기를 풀었다. 이번에는 진심 바보처럼 탐욕적으로 풀기 위해서 README도 생략하고 풀었더니 실패했다. 너무 그리디하게 풀었더니 진심 바보처럼 풀었다.
  • 문제를 푼 후에 NextStep 문익점 “2단계 문자열 계산기”를 따라 공부 할 겸 계산기를 만들었다. 객체 지향적으로 사고를 하면서 짰어야 했는데 결국엔 기능을 먼저 생각을 하면서 짜게 되었다. 물론 책임과 행동을 생각 하면서 짜는것도 좋지만 도메인 모델을 써서 구조적으로 짰어야 했다.

Feelings

  • 그리디 푸는 방법은 미래를 안보고 당장 최선의 선택을 골라서 하는거다. 문제가 이 당장 최선의 선택이 모호하다는것. 어떤 사람이 한 기준으로 봤다면 다른 사람은 다른 기준으로 잡을 수 있어서 이건 너무 주관적이라서 뭔가 문제 푸는 것 보단 찍는 느낌이 더 든다.
  • 계산기를 만들면서 객체지향적인 사고가 부족하다는것을 느꼈다.

Findings

  • 그리디 풀이법은 당장 최선의 선택을 골라서 푸는것이다. 그러나 당장, 최선이 사람마다 기준이 달라서 제출자 마음대로 인게 많다.
  • 리펙토링은 나중에 몰아서 하는게 아니라 당장 바로 하는게 리펙토링이다.

Future Action

  • 그리디 문제는 너무 주관적인게 많고 뭔가 문제를 풀어도 문제 푼 느낌이 안들고 그냥 때려 맞췄다는 느낌이 크다. 이럴려고 문제 푸는게 아니니 다른 문제를 풀면서 알고리즘 실력을 향상하자.
  • 객체지향적인 사고를 배우기 위해서 지금 하는 연습을 하고 있는데 나는 그러지 않았다. 그러므로 다음에는 더 오래 걸리더라도 처음 부터 객체 지향적으로 짤 수 있도록 하자.