전체 글 25

동적계획법 [Dynamic Programming - DP](2) - 실전편

○ 이어가는 글 https://kuck-su-labor.tistory.com/92 위 글에서 이어집니다. ○ 들어가는 글 이번 시간에는 DP실제로 구현하는 것에 초점을 맞추려고 합니다. 구현할 각각의 알고리즘은 다음과 같습니다. 1. 피보나치수열을 DP로 구현하기 2. 이진트리를 DP로 구현하기 ○ 피보나치수열을 DP로 구현하기 우선 앞서 설명하자면 이번 피보나치 수를 구하는 문제는 재귀를 수행하지 않고 작성하려고 합니다. DP는 굳이 재귀로 구현하지 않아도 되고, 그래야 비용도 더 싸기 때문입니다. 피보나치수열을 DP로 구현해 보도록 하겠습니다. DP에서 가장 중요한 것은 메모지에이션을 구현하는 것입니다. 우선 우리는 간단하게 리스트를 만들었습니다. 10번째 피보나치 수를 구하기 위한 변수도 설정하겠습..

알고리즘 5+1 2022.02.02

동적계획법 [Dynamic Programming - DP](1) - 개념편

○들어가는 글 저번 시간부터는 동적 계획법의 대해서 알아보려고 합니다. 간략하게 개요에서는 왜 이것을 사용하게 되었는지 간략하게 소개하고 어떠한 방법론을 가졌는지 까지 해서 간단히 이론의 대해 설명드리도록 하겠습니다. ○개요 이전 글에서 간략하게나마 재귀알고리즘 즉 분할 정복의 단점의 대해서 알려드렸습니다. 재귀가 많이 일어나서 비용이 많이 발생한다는 것이었죠. 위와 같은 이야기를 꺼낸 것은 동적 계획법은 분할정복법에 뿌리를 두고 있기 때문입니다. 동적계획법은 분할 정복법과 비슷한 알고리즘으로 동작합니다. 큰 문제를 해결하기 위해서 작은 문제로 분할하고, 이를 재귀적으로 해결하는 것까지 동일합니다. 하지만 차이점이 있다면 재귀로 구한 작은 문제의 결과들을 저장하였다가, 나중에 같은 문제가 나왔을 때, 재..

알고리즘 5+1 2022.01.23

분할정복법 [Divide & Conquer] (2 - 실전편 )

○들어가는 글 저번 시간에는 분할 정복법의 대해서 알아보았습니다. 분할 정법이 무엇이고, 또 그리디와의 공통점, 차이점을 들어가면서 이를 더 다뤄봤었습니다. 이번 시간에는 저번에 우리가 예제를 들었던 피보나치수열 문제를 알아보고, 구현해 보는 시간을 가져보도록 하겠습니다. 추가로 이진트리도 다뤄보고, 마지막으로 분할 정복법의 대한 총정리까지 마치면서, 이번 시작을 마치려고 합니다. ○ 문제1) 피보나치 수열 구현 피보나치수열을 구현해 봅시다. 저번 시간에서 여러 번 다뤘지만, 다시 한번 피보나치의 구조를 다시 한번 봅시다. 피보나치는 위와 같이 재귀적인 구조이고, 이러한 문제를 작게 쪼개어 풀고 다시 합치는 것으로 문제를 해결할 수 있다고 하였습니다. 이 부분의 대한 자세한 설명은 이전 글에 있습니다. ..

알고리즘 5+1 2022.01.02

1. 의존과 의존성 주입(DI) - 의존성에 대해서

○ 목차 개요 : 의존성 주입(DI)는 스프링의 꽃이다. 의존성 의존성의 문제점 DI(의존성 주입) DI 가 문제를 해결하는 가? SRP DI의 대해 좀 더 ○ 의존성 주입(DI)은 스프링의 꽃이다. 학교를 다니면서 스프링의 대해서 이야기가 나올 때에면, 가장 많이 나오던 말이었습니다. DI, 그놈의 DI가 무엇이길래 이렇게 말이 나오는 것인지 많이 궁금하기도 했습니다. 사실 이런 말이 나왔다는 것은 그만큼 중요하다는 말이고 실제로도 스프링의 핵심 요소이기도합니다. 만약 스프링에 DI가 없었더라면 이렇게 범용적으로 사용되는 프레임워크는 아녔을 것입니다. 이번 시간에는 스프링의 대해서 배우기 전 의존성과 DI(의존성 주입 - Dependency Injection )의 대해서 이것이 무엇이고, 왜 필요한 지..

카테고리 없음 2021.12.19

최근 근황

안녕하세요, 한동안 블로그에 글을 쓰지 못했었네요;; 결국 핑계이지만, 여러가지 일을 병행하게 되면서 블로그와 기타 등등의 일을 잠시 접어두고 다른 일을 하게 되었습니다. 결국 거의 2달에 가까운 시간동안 들어오지 못했지만, 그래도 좋은 점은 결국 성공적으로 끝나 어느정도 보람이 있었던 것 같네요. 앞으로도 계속 글을 작성하려고 합니다. 알고리즘 레포트의 경우에는 지금까지 계획없이 썼었기 때문에, 조금의 재정비가 필요하다고 생각했습니다. 각각의 내용도 좋지만, 이것이 서로 유기적으로 이어져 보는 사람들로 하여금, 좀 더 이해할 수 있도록 하는 것이 중요할 것이라고 생각했기 때문입니다. 지금까지 분할 정복법의 대해서 다루어 보았던 것으로 알고 있습니다. 이렇게 계속해서 DP까지 모두 끝내고, 재귀를 주제로..

카테고리 없음 2021.10.31

분할정복법 [Divide & Conquer] (1 - 이론편 )

○ 들어가는 글 글 쓰기에 앞서 잠시 일이 있어, 한 동안 업로드를 하지 못했었습니다. 시험이 있었는데, 떨어진 다음에 다시 보는 것보다. 차라리 집중해서 한 번에 통과하는 게 더 낫겠다는 생각이 있었거든요… 핑계는 여기까지 하도록 하겠습니다. 이번 시간부터는 동적 계획법(Dynamic Programming, DP)의 대해서 알아보려고 합니다. 쉽게 설명하자면, 재귀 같은 알고리즘을 좀 더 비용이 적게 사용할 수 있는 것 정도라고 가볍게 생각해보시는 게 좋을 것 같습니다. 가볍게만 생각해 주세요 따라서 이런 동적 계획법을 알기 위해서 저번에 쓴 재귀나 트리의 대한 글을 한번 읽어보시길 권장드리고, 또 이를 명확히 알기 위해서 이번 시간에는 분할 정복법 (Divide & Conquer)의 대해서 알아보려고..

알고리즘 5+1 2021.08.24

자바의 자료구조의 대한 노트

○ 들어가는 글 이번 글은 원래 자바를 공부하거나, 혹은 추후에 사용할 때 헷갈리는 부분을 한번에 보기 위해서 정리해 놓은 노트였습니다. 따라서 비공개 였으나, 계속 쓰다 보니 양이 좀 되는 것 같아서 따로 하나의 문서로 만들게 되었습니다. 저는 쉽게 쉽게, 자바를 사용하다가 햇갈리는 부분이 있으면 그 때 그 때 참고하려고 합니다. 자주쓰는 코드나, 패키지 등을 확인하는데 유용할 것입니다. 예시코드는 아래 웹 컴파일러를 기준으로 작성하였습니다. https://replit.com/languages/java10 Java Online Compiler & Interpreter Write and run Java code using our Java online compiler & interpreter. You ca..

카테고리 없음 2021.07.31

예상 대진표 문제 (3) - 비트연산과 이진트리

이어지는 글 해당 글에서 이어집니다. https://kuck-su-labor.tistory.com/75 비트 연산을 활용해서 풀기 참가자 1번부터 8번까지의 사람이 토너먼트를 한다고 했을 때 각 도전자의 위치를 이진수로 표현하면 다음과 같습니다. ( 0부터 시작하기 위해 -1을 하고, 0을 생략했습니다. ) 예를 들어 7번 참가의 경우에는 다음과 같습니다. (7 - 1) = 2² + 2 ¹ 하지만 사실 다음과 같이 표현할 수도 있습니다. (7 - 1) = (2² * 1) + (2 ¹ * 1) + (2⁰ * 0) 사실 생략이 있었지만 위와 같은 표현이 맞습니다. 그리고 이를 이진수로 바꾸게 되면 다음과 같습니다. (7 - 1) = (2² * 1) + (2 ¹ * 1) + (2⁰ * 0) = 110 각 자리..

알고리즘 5+1 2021.07.14

예상 대진표 문제 (2) - 이진법 풀이

이어지는 글 해당 글에서 이어집니다. https://kuck-su-labor.tistory.com/73 구현 문제 우선 첫 번째로 트리의 높이를 구하는 것은 쉽습니다. 여러 가지 방법이 있지요, 제일 쉬운 것은 2로 계속해서 나눈 횟수를 이용하거나 해서, 결국 지수를 구하기만 하면 됩니다. 문제는 두 번째, A와 B사이를 간추릴 방법입니다. 단순히 차이로 계산하기에는 재귀적인 구조여서 구현하기 힘들어집니다.. 우리는 이 문제가 이진 트리과 관련이 있다는 것을 생각한다면 이진법으로 풀 수 있다는 것을 알 수 있습니다. 우선 참가자가 8명인 토너먼트가 존재한다고 할 때, 토너먼트 구조는 다음과 같고, 해당 참가자는 다음과 같이 이진 적으로 표현할 수 있을 것입니다. 이를 활용하기 위해서는 2가지 경우를 알아..

알고리즘 5+1 2021.07.10

일단 해보는 야매 유화 (feat.다이소)

발단 다이소에 볼일이 있어서 잠시 들어갔었습니다. 여러 가지 살게 있어서 잠시 들어갔었는데, 미술용품 코너에 유화 물감을 팔더군요 살면서 수채화나 아크릴은 써본 적이 있지만, 유화는 한 번도 써본 적이 없었습니다. 물감도 물감이고, 사실 일상이나 학교에서 인연이 없을 법한 물건이기 때문에 어찌 보면 처음 보는 순간이었습니다. 따라서 이왕 본 김에 한번 유화로 뭘 그려보자고 생각했었습니다. 아주 예전에 미술용품은 오래되어서 버렸기 때문에 모두 새로 구매했습니다. 다이소에서 산거는 다음과 같았습니다. A6 크기 캔버스 - 2000원 유화물감 12세트 - 3000원 붓 6세트 - 2000원 페인트 롤러 세트 - 2000원 페인트 롤러의 경우에는 원래 캔버스에 젯소를 바르려고 산거였는데, 정작 가장 중요한 젯소..