터얼렸다 (5주차 WIL)

Kyumin_Kim·2026년 4월 2일

털렸다.
뭐에 털렸는지 알아보자.

다이나믹 프로그래밍
큰 문제를 작은 문제로 나누어 효율적으로 값을 구하는 '방법'이다.
알고리즘보다는 말그대로 문제를 해결하는 방법에 좀더 가깝다.

다이나믹 프로그래밍 설계 순서
1. 계산 해야 할 array의 값들을 명확히 정의
2. 계산 할 값의 점화식을 찾는다
3. 점화식을 이용하여 array에 값들을 계산하여 bottom-up 방식으로 채운다.
4. 원래 문제의 답을 추출

처음에 다이나믹 프로그래밍을 피보나치 문제만 생각 하고 탑다운으로 접근하다보니 시간이 터지고 메모리가 터져나갔다.
대부분 바텀업방식으로 어떻게 풀지를 고민하는게 더 낫더라
결국 점화식을 찾는게 가장 중요하다.

그리디 알고리즘:
매 선택에서 당장 최적인 답을 선택하여 결과를 도출하는 알고리즘이다.
좀 단순하게 말하면 꼼수?를 찾아서 쉽게 푸는 방식이다.
그리디로 풀수 있으면 풀고 못풀면 DP로 풀면 된다.

수요코딩회

저번주에 이어 React중 컴포넌트, state, Hooks를 구현하는 날이었다.
구현전에 개념을 학습하고 구현을 하려고 했는데,
컴포넌트와 Hooks간 관계에 혼동을 해서 이해하는데 애를 먹었었다.

컴포넌트는 모두 함수형 컴포넌트로 구현했다.
루트 컴포넌트에 state와 Hooks를 전부 몰아놓고 자식 컴포넌트에서 표현하는 식으로 만들었다.
Hooks중 useState를 사용하여 state가 변경 되면 다시 렌더링 하게 구현을 했고
렌더링 할때 저번주에 만들었던 vdom-diff로 만든 렌더링 파이프로 렌더링 비용을 최소화 하였다.
useMemo랑 useEffect는 deps가 바뀔때만 수행하게 하였고, useMemo는 통계용, useEffect는 로컬에 데이터를 저장하는 용도로 사용했다.

데모를 만들어야 했는데 구현한걸 전부 보여주기에는 정상적인 사이트로는 한계가 있어서
웹 에어컨처럼 쓸모없는 버튼 사이트를 만들어서 데모를 만들었다.

마치며...
이번 주차는 알고리즘 마지막 주차답게 문제에서 털렸다...
아무리 그래도 못 풀던 문제는 없었던거 같은데 못풀어서 쩔쩔매다가
다른 실버수준의 문제를 풀고 익숙해진 뒤에야 겨우 풀었다.
다음주부터는 본격적으로 C언어를 시작한다.
드디어 알고리즘의 지옥에서 벗어나는건가? 아니면 더 깊은 곳으로 들어가는건가.

profile
머릿속 게임아이디어를 꺼내기 위해 고민중...

0개의 댓글