5월 23일 (월)
오늘 한 일
- leetCode 풀기
- 70. Climbing Stairs
- 첫 시도는 직관적으로 도전했으나, 들어오는 값이 커지면 그 처리를 어떻게 해야할 지 감이 잡히지 않아 3 이상의 값 처리를 어떻게 하는지 참고하려고 discuss를 보았다. 대부분의 사람들이 피보나치 수열로 해결하는 것을 보고 NeetCode의 해결 영상을 보고 나도 피보나치 수열을 사용해보았다. 이해하면 쉽지만 이런 문제를 처음 마주치는 사람이라면 바로 생각해내지 못할 것 같았다. (우선 내가 그렇다.)
- 198. House Robber
- 위의 문제와 비슷하게 다음 노드를 탐색하며, 그 과정에서 Math.max를 이용하여 최대값을 구하는 알고리즘을 구현하였다. NeetCode의 도움을 받았다.
- 120. Triangle
- 이 문제는 영상을 봐도 이해가 어려웠다😂 DP 공부를 좀 더 하고 다시 도전해보아야 할 문제이다..
- 70. Climbing Stairs
느낀 점
DP 문제는 정말 어렵다는 것을 느꼈다 하하... 재귀를 처음 배울 때의 느낌이었다. 그래도 지금 내가 재귀를 이해하고 풀 수 있는 것처럼 언젠가 DP 문제를 이해하고 풀 수 있는 날이 오길 바란다.
알고리즘 문제를 하루종일 붙잡고 있었더니 멘탈이 와르르... 하루종일 푸는 것도 좋지만 시간을 정해두고 그 시간에만 알고리즘에 집중하는 방법으로 공부를 해보아야겠다.
5월 24일 (화)
오늘 한 일
- leetCode 풀기
- 231. Power of Two
- 2의 거듭제곱인지 판별하는 문제였다. 내 스스로 풀고 싶어서 비트 연산자를 사용하지 않고 재귀 함수를 사용하여 풀어보았다. 원리는 금방 이해했는데, 재귀 함수에서 반환하는 값들의 흐름을 이해하지 못해 처음에 undefined가 출력이 되어 디버깅을 통해 따라가서 다시 반환을 시켜주었다. 두 문제 모두 나의 힘으로 풀 수 있어 뿌듯했다!
- 191. Number of 1 Bits
- 2진수 정수가 들어오면 1의 개수가 몇 개인지 반환하는 문제였다. 비트 조정을 배우지 않았기 때문에 Array로 변환하여 문제를 해결할 수 있었다.
- 231. Power of Two
Comment