지우쓰 개발일기
1장 | 깨끗한 코드 🚩 목표 🔥 좋은 코드와 나쁜 코드를 구분하는 능력 🔥 좋은 코드를 작성하는 방법 🔥 나쁜 코드를 좋은 코드로 바꾸는 실력 💻 코드는 요구사항을 상세히 표현하는 수단이다 "기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다." (p.2) 💻 나중은 결코 오지 않는다 "우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다." (p.4) 📝 느낀점 요즘 이것저것 공부하고 만들며 일 잘하는 프로그..

문제 풀이 DP 알고리즘 문제들 중 유명한 문제라고 한다. 찾아보기 전엔 몰랐음 ㅎ; 반복문으로 DP를 풀 수도 있지만 반복문은 딱 봤을 때 이해하기 힘들어서 재귀로 풀었다. 재귀가 실행속도는 조금 더 느리긴 한데, 이름도 더 만족스럽게 지을 수 있고 이해도 더 잘됐다. 1번부터 N번까지 행렬을 모두 곱할 때의 최소 카운트를 구하는 문제다. DP는 큰 문제를 작은 문제로 쪼개는 것이니까, 작은 범위에서부터 최솟값을 구하고 그 최솟값을 바탕으로 다음 범위의 최솟값을 구하면 된다. 각 변수들은 다음을 의미한다. rows[i]: i번째 행렬의 열 갯수 cols[i]: i번째 행렬의 행 갯수 dp[i][j]: i번부터 j번까지의 행렬을 곱할 때의 최소 카운트 getMinCount() 내부의 반복문을 돌 때 모든..

문제 풀이 1원부터 k원까지 단계적으로 추가해가면서 최종값을 구해야 겠다는 생각은 금방 들었는데, 그 안에서 동전도 단계적으로 추가해야 겠다는 생각을 하는 데에 시간이 조금 걸렸다. 모든 동전을 다 사용하는 경우의 수를 한 번에 구하는 것은 불가능하다. 따라서 사용하는 동전을 제한하고 하나씩 늘려감으로써 최종 값을 구해야 한다. 즉, 동전 하나(coins[1])만 사용했을 때, 1원부터 k원까지 전체 value를 만들 수 있는 경우의 수를 구하고, 동전 두개(coins[1], coins[2])를 사용했을 때, 2원부터 k원까지의 경우의 수를 구해야 한다. 이렇게 전체 동전을 사용할 때까지 반복하면 모든 동전을 사용했을 때 k원을 만들 수 있는 경우의 수를 구할 수 있다. 각 변수에는 다음을 저장한다. -..