알고리즘6 [재귀] java 코드로 하노이 탑 쉽게 이해해보자! by.펜잡이 개발자 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 🤔포스팅을 통해 얻어갈 수 있는 지식🧐 ✔ 재귀에 대해 이해를 할 수 있다. ✔ 하노이 탑 코드를 이해를 할 수 있다. 새벽시간에 하노이 탑을 이해하여 빠르게 독자분들에게 지식을 공유하기 위해서 작성하게 되었다.. 나와 같이 하노이 탑을 이해하는데 오랜시간들인 독자분들도 하노이탑 코드를 이해할 수 있기를 바라며... 먼저 직관적으로 코드를 통해서 어떻게 동작하는지 이해해본 후에 예시를 통해서 더 자세하게 살펴보는 것이 이해하는데 더 도움이 될 거 같다. 1: public class 하노이탑 { 2: public static void main(String[] ar.. ┌───자료구조&알고리즘───┐ 2020. 9. 17. 펜잡이 개발자>[알고리즘_탐욕(greedy)]프로그래머스 "구명보트" 문제 풀이 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 🤔포스팅을 통해 얻어갈 수 있는 지식🧐 ✔ 탐욕법을 활용한 문제 풀이 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다... 탐욕(greedy)/문제풀이 2020. 8. 27. 펜잡이 개발자>[알고리즘_DFS]프로그래머스 "타겟 넘버" 문제 풀이 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 🤔포스팅을 통해 얻어갈 수 있는 지식🧐 ✔ DFS를 활용한 문제 풀이 방법 (문제 사이트 이동) 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다.. 깊이,너비 탐색(DFS,BFS) 2020. 8. 26. 펜잡이 개발자_[알고리즘_탐욕(greedy)]크루스칼 알고리즘(Kruskal Algorithm)의 개념과 성립조건에 대해 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 🤔포스팅을 통해 얻어갈 수 있는 지식🧐 (클릭하면 해당 제목으로 이동해요) ✔ 크루스칼 알고리즘이란? ✔ 크루스칼 알고리즘 성립 조건 탐욕 알고리즘(greedy) 👉 크루스칼 알고리즘(Kruskal Algorithm) 사전에 알고 있어야 할 용어 노드=정점=도시 : 그래프에서 동그라미에 해당하는 부분 간선=거리=비용=가중치 : 그래프에서 선에 해당되는 부분 크루스칼 알고리즘이란? 가장 적은 비용으로 모든 노드를 연결하기 위해 사용하는 알고리즘 최소 비용 신장 트리(MST, Minimum Spanning Tree)를 만들기 위한 대표적인 알고리즘 ex) 여러 개의.. 탐욕(greedy)/크루스칼 알고리즘 2020. 8. 22. [알고리즘_정렬] 합병(병합)알고리즘(Merge Sort) 시간복잡도가 왜 NlogN인지 그림으로 한방에 이해해보자! 이 보다 더 쉬운 설명은 없다! 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 필자는 합병(병합) 알고리즘(merge sort)이 시간복잡도가 왜 N*logN 인지 오랜시간 이해하지 못했다. 나뿐만이 아니라, 알고리즘 시간복잡도 자체는 다들 이해하기 어려워하는 분야이기도 하고, 병합 알고리즘 시간복잡도에 관련하여 나처럼 이해하기 어려워하는 분들도 많이 있는 거 같았다... 암기보다는 이해를 해야하는 성격이라서 늘 이해하고 싶은 갈증이 있었다. 오늘 백준 알고리즘 문제를 풀다가 병합 알고리즘을 사용해서 풀어야하는 문제가 나왔고, 문제를 푼 후 '시간복잡도를 다시 이해해보자' 라는 불굴의 의지로 검색과 강의를 보면서 노력한 끝에 진짜 신기하게.. 정렬(Sort) 2020. 8. 9. [프로그래머스_level2]그림으로 설명하는 2020 kakao blind recruitment > 문자열 압축 데브림의 블로그 포스팅 한 것들을 한 눈에 확인하고 싶다면 클릭! 👉 https://github.com/DevLimK1/tistory-map 👈 나의 소소한 기록이 누군가에게는 도움이 되기를 바라며... 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/60057 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복.. 프로그래머스/level2 2020. 7. 8. 이전 1 다음