Fact
- 오늘 문제를 풀었다. 가장 큰 정사각형 찾기
- 첫 번째 문제는 효율성 문제에다가 dynamic programming 문제였다. 결국엔 다른 사람 풀이를 보고 풀었다. 또한 예외 처리하기 위해서 시간 많이 허비했다. 예외 처리하기 위해서 math의 내장 함수 max를 썼다. 그러나 max를 쓰니 다른 데서 터졌다. 알고 보니 max는 123222 개 요소까지만 확인할 수 있었다.
- 두 번째 문재는 짝 프로 했는데 5분 만에 풀려서 키보드 만진 적이 없다.
- 마지막 문제는 어떻게 푸는지 몰라서 풀이를 봤는데도 못 풀었다…
- 오늘도 자바 수련을 했다.
Feelings
- 문제도 제대로 못 풀고 설계도 제대로 못하니 갈 길이 멀구먼…
Findings
-
Math.max를 쓸 수 있는 요소의 수가 정해져 있다… 123222 개의 요소를 넘으면 터진다.
b =Array(123223).fill(0) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … 123123 more items ]
Math.max(…b) //Thrown: //RangeError: Maximum call stack size exceeded // at Math.max (
)
b =Array(123222).fill(0) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … 123122 more items ]
Math.max(…b) 0
- 하드 코딩은 설계를 어떻게 할지 모를 때 쓰던가 혹은 다른 것을 구현하다가 사소한 것을 그냥 빨리 넘기기 위한 것이다. 그리고 하드 코딩은 처음부터 끝까지 하는 게 아니라 당장 구현하는데 필요 한 만큼만 하는 것이다. 테스트를 짜면서 사소한 것을 하드 코딩하면서 필요한 것을 알아낸다. 알아낸 것을 이제 그냥 구현을 하면서 설계하면 된다.
- 테스트는 딱 필요한 것만 짜야 한다. 짤 때는 규칙을 적어야 한다.
## Future Action
- 설계하다가 막힘이 있으면 그 문제를 풀어내기 위해서 인터넷이나 책을 보던가 물어보던가 하자 우회하려고 하지 말고.