①객체지향 // SOLID // SRP(Single Responsibility Principle)
SOLID 원칙 중에 SRP는 한글로 번역하면 단일 책임 원칙으로 해석됩니다. 여기서 단일 책임은 Class에는 하나의 책임을 가지고 설계해야 한다는 것입니다. Class에 책임의 개수가 많아지게 되면 한 책임의 기능 변화가 다른 책임이 주는 영향에 비례해서 증가하기 때문에 전체 설계에 큰 위험이 따르게 됩니다. 또한, 단일 책임 원칙을 지키지 않게 되면 Class 재사용이 어렵게 됩니다. 

② Spring Boot 동작원리 
Client로부터 요청이 들어오게 되면 이를 내장 톰캣 서버(=Servlet Container)가 받게됩니다. 여기서 Bean의 관리는 Spring Container 가 수행하게 됩니다. MVC 패턴을 사용하게 되면 Dispatcher Servlet에 의해서 Controller 로 이동해 요청한 URL이 맞는지 확인합니다. 그리고 Controller에서 정의된 Bean은 Spring Container에서 불러와 사용합니다. Controller 이후 Service로 이동해 DB와 연결하고 처리된 결과를 HttpMessage Converter를 사용해 문자 혹은 객체로 바꿔서 ResponseBody에 넣어 Client로 response 하게 됩니다. 

③ 냅색 알고리즘
냅색 알고리즘은 동적 계획법을 사용하는데 주어진 가방에 물건을 넣었을 때 최대 가치를 얻어내는 과정입니다.
다음 점화식을 구성해보겠습니다. DP[i][j] = 가방크기가 i일 때 j번째 물건을 담을 수 있는 최대 가치로 정의하겠습니다.
여기서 Base Value는 DP[0][i] = DP[j][0] = 0으로 명시하겠습니다.
> 크게 보면 가방의 크기 i가 weight[j] 보다 >= 경우에는 가방에 물건이 들어갈 수 있습니다. 이는 가방의 크기가 i-weight[j] 가 되게 됩니다. 그래서 가방의 크기가 i-weight[j] 크기 가방에는 이전 가방에 담겨져 있는 가방의 가치에 현재 weight[j]의 value[j]를 더하는것을 의미하게 됩니다. 
> 그래서 위 내용을 점화식으로 풀어쓰면 DP[i][j] = max(DP[i][j-1], DP[i-weight[j]+value[j]) 입니다.
> 물건을 안넣거나 가방 크기 때문에 넣을 수 없다면 i번째 가방에 j-1번째 물건을 넣은 가치로 사용하게 됩니다. 
> 마찬가지로 위 내용을 점화식으로 풀어쓰면 DP[i][j] = DP[i][j-1] 이 됩니다.

👍참고 블로그 // 문서 

① SRP 
- https://steady-coding.tistory.com/370 

 

[SOLID] 단일 책임 원칙(SRP)이란?

안녕하세요? 제이온입니다. 이번 시간부터는 SOLID의 원칙 하나씩 알아보려고 합니다. 그렇다면, 이 SOLID 원칙이란 무엇일까요? SOLID 원칙 흔히 객체 지향 5대 원칙으로 불리는 이 SOLID 원칙은 SRP(단

steady-coding.tistory.com

② 냅색 알고리즘
- https://namnamseo.tistory.com/entry/%EB%83%85%EC%83%89-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 

 

냅색 알고리즘

냅색 문제는 유명한 다이나믹 문제 중 하나이다. (사진 출처 wikipedia.org) 가장 유치하지만 또 가장 많이 쓰이는 설명으로는, 한 가게에 도둑이 들었다. 도둑이 훔치고 싶은 물건들은 다 각각의 값

namnamseo.tistory.com

WIL 은 Weekly I Learn 으로 매주 목, 일 작성하고 있습니다.