본문 바로가기

전체 글291

알고리즘 문제 풀이 고찰 보통 알고리즘 문제라고 하면 코딩테스트를 위한 것으로 생각하는 경향이 있다. 나도 그랬었다. 아마 문제로 나오는 알고리즘의 유형이 실제로 사용할 일이 적기 때문이라고 생각이 된다. 필자의 경우에는 서비스 개발(프론트엔드, 백앤드) 업무를 하면서 트리나 그래프 자료구조를 직접적으로 구현할 일이 입사한 이후로 사용할 일은 없었다. 전에 공부했었던 디테일은 까먹어서 기본적인 개념만 생각이 난다. 학부 때 알고리즘 수업을 성적을 1~2등 할 정도로 정말 열심히 들었었다. 알고리즘 구현체를 달달 외워서 직접 쓸 정도로 열심히 했던 거 같다. 나는 배우고 공부하는 것에 있어서 바로 사용할 수 있는 지식과 경험을 좋아한다. 하지만 이후 시험을 봤던 코딩테스트(카카오, 라인 등) 에서는 업무에 이게 쓰이나 싶은 것들이.. 2022. 10. 9.
리팩터링 2판 요약 #정의 리팩터링: [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링은 기능의 변경이 없어야 한다. 즉, 동작하던 기능이 절대 변경되어서는 안된다. 리팩토링 이후 기존 테스트가 통과해야 한다. # 기본적인 리팩터링 - 함수 추출하기 -> 무슨 일을 하는지 파악한 다음, 독립된 함수로 추출하고 목적에 있는 맞는 이름을 붙인다. - 함수 인라인하기 -> 함수 본문이 이름만큼 명확한 경우나 함수로 잘못 추출된 함수들을 인라인한다 - 변수 추출하기 -> 표현식이 너무 복잡해서 어려울 때 적절한 변수명을 사용하여 코드의 목적을 명확하게 드러낸다 - 변수 인라인하기 -> 변수의 이름이 표현식과 다를 바 없을 때는 변수를 인라인한다. - 함수 선.. 2022. 10. 8.
백명석님 코드리뷰 세미나 요약 백명석님 코드리뷰 세미나 중 핵심 정리 IDE 등으로 해결될 수 있는 것들은 팀 차원에서 결정하여 사용 (49:20) https://youtu.be/ssDMIcPBqUE?t=2960 리뷰는 고수준의 리뷰부터 한 후 저수준의 리뷰를 한다 (1:02:00) https://youtu.be/ssDMIcPBqUE?t=3721 피드백에서 ‘너’ 라고 하지 마라. 비판의 대상은 코드 (1:09:00) https://youtu.be/ssDMIcPBqUE?t=4140 진정한 칭찬을 해라 (1:11:50) https://youtu.be/ssDMIcPBqUE?t=4310 피드백은 명령이 아닌 요청으로 해라 (1:13:00) https://youtu.be/ssDMIcPBqUE?t=4380 의견을 줄때는 ‘제안하는 변경’ 과 .. 2022. 10. 3.
leetcode Climbing stairs https://leetcode.com/problems/climbing-stairs/ # 문제 계단을 한 번에 1개나 2개 오를 수 있을 때, 계단 n 개를 올라가는 경우의 수를 구하는 문제이다. n이 30개이라고 생각해보면, 한 번에 1개나 2개의 계단을 오를 수 있기 때문에 30번째 계단에 도달하기 직전은 29번째 계단과 28번째 계단이다. 즉, 29번째 계단까지 오르는 경우의 수와 28번째 계단까지 오르는 경우의 수를 더하면 30번째 계단까지 오르는 경우의 수가 된다. 따라서 다음과 같이 문제 해결을 할 수 있다. dp(dynamic programming)을 이용하면 된다. `n번째 계단까지 경우의 수 = n-1번째 계단까지 경우의 수 + n-2번째 계단까지 경우의 수` 그림이 포함된 유사한 해결 방.. 2022. 9. 25.