전체 글 144

[99클럽 코테 스터디] 📝 Day20. 동적계획법 (2)

99클럽 코테 스터디 20일차 TIL + 동적계획법📍 오늘의 학습 키워드동적 계획법(Dynamic Programming)메모이제이션(Memoization)📝 공부한 내용 본인의 언어로 정리하기📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘은 동적 계획법과 메모이제이션에 대해 학습했습니다. 문제 해결 과정에서 주어진 문제를 작은 부분 문제로 나누고, 이를 해결하는 방법을 익혔습니다.실패한 이유는 초기에 사용한 코드가 올바르지 않았기 때문입니다. 초기 코드에서는 모든 연산자의 경우의 수를 탐색하면서 최댓값을 계산했지만, 중복 계산이 많이 일어나고 효율성이 낮았습니다.🤔 어떻게 해결했는지🔖 참고링크 (https://develop-tracking.tistory.com/88)문제를 ..

[프로그래머스][JAVA] 43105. 정수 삼각형

💡 문제정수 삼각형 (https://school.programmers.co.kr/learn/courses/30/lessons/43105)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념최적 부분 구조 (Optimal Substructure):큰 문제를 작은 문제로 쪼갤 수 있고, 작은 문제의 최적해를 이용하여 큰 문제의 최적해를 구할 수 있는 구조입니다.동적 프로그래밍은 이러한 최적 부분 구조를 활용하여 문제를 해결합니다.중복되는 부분 문제 (Overlapping Subproblems):동적 프로그래밍에서는 같은 문제를 반복해서 해결해야 할 때가 있습니다.이때 중복되는 계산을 피하기 위해 이미 계산한 값을 저장하고 재활용합니다.동적 프로그래밍의 효율성은 이 중복되는 부분 문제를 최소화..

[99클럽 코테 스터디] 📝 Day19. 동적 프로그래밍 (DP) 2

99클럽 코테 스터디 19일차 TIL + 동적 프로그래밍 (DP) 2📍 오늘의 학습 키워드동적 프로그래밍📝 공부한 내용 본인의 언어로 정리하기동적 프로그래밍은 복잡한 문제를 효율적으로 해결하기 위한 알고리즘 기법 중 하나입니다. 이를 위해 몇 가지 주요 개념을 이해해야 합니다.최적 부분 구조 (Optimal Substructure): 큰 문제를 작은 문제로 나눌 수 있고, 작은 문제의 최적해를 이용하여 큰 문제의 최적해를 구할 수 있는 구조입니다.중복되는 부분 문제 (Overlapping Subproblems): 동적 프로그래밍에서는 같은 문제를 반복해서 해결해야 할 때가 있습니다. 중복되는 계산을 피하기 위해 이미 계산한 값을 저장하고 재활용합니다.메모이제이션 (Memoization): 이미 계산한..

[프로그래머스][JAVA] 42895. N으로 표현

💡 문제N으로 표현 (https://school.programmers.co.kr/learn/courses/30/lessons/42895)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념동적 프로그래밍 (Dynamic Programming): 이 문제는 동적 프로그래밍의 접근 방식을 사용하여 해결됩니다. 동적 프로그래밍은 큰 문제를 작은 부분 문제로 나누어 해결하는 방법론으로, 각 부분 문제의 해결 방법을 저장하고 재활용함으로써 전체 문제를 해결합니다. 이러한 특성을 이용하여 중복 계산을 피하고 효율적인 알고리즘을 설계할 수 있습니다.최적 부분 구조 (Optimal Substructure): 이 문제는 최적 부분 구조를 가지고 있습니다. 즉, 주어진 문제를 작은 부분 문제로 나누어 해..

[99클럽 코테 스터디] 📝 Day18. 동적 프로그래밍 (DP)

99클럽 코테 스터디 18일차 TIL + 동적 프로그래밍 (DP)📍 오늘의 학습 키워드동적 프로그래밍 (Dynamic Programing)최적 부분 구조 (Optimal Substructure)숫자 조합 계산자료 구조 (Data Structures)📝 공부한 내용 본인의 언어로 정리하기📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘은 동적 프로그래밍을 활용한 문제를 풀었습니다. 초기에는 문제를 완전 탐색으로 접근했는데, 효율적인 해결 방법을 찾지 못했습니다.🤔 어떻게 해결했는지🔖 참고링크 (https://develop-tracking.tistory.com/84)도움을 받아 동적 프로그래밍을 이용하여 문제를 해결했습니다. 작은 부분 문제들을 해결하여 전체 문제를 효율적으로 해..

[99클럽 코테 스터디] 📝 Day17. 그리디 알고리즘

99클럽 코테 스터디 17일차 TIL + 그리디 알고리즘📍 오늘의 학습 키워드그리디 알고리즘정렬 알고리즘자료구조탐욕적인 선택 속성과 최적 부분 구조문제 해석 능력📝 공부한 내용 본인의 언어로 정리하기오늘은 그리디 알고리즘과 관련된 문제를 중심으로 공부했습니다. 그리디 알고리즘은 각 단계에서 최적의 선택을 하는 알고리즘으로, 지역적으로는 최적이지만 전체적으로는 최적해를 보장하지 않을 수 있습니다. 이를 이해하고 문제를 해결하기 위해서는 탐욕적인 선택 속성과 최적 부분 구조를 파악해야 합니다.또한, 정렬 알고리즘과 자료구조 역시 그리디 알고리즘을 적용하는 데 중요한 역할을 합니다. 문제를 해결하기 위해서는 주어진 데이터를 적절하게 정렬하고, 필요한 정보를 효율적으로 관리할 수 있는 자료구조를 선택하고 활..

[프로그래머스][JAVA] 42884. 단속카메라

💡 문제단속카메라(https://school.programmers.co.kr/learn/courses/30/lessons/42884)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념그리디 알고리즘: 그리디 알고리즘은 각 단계에서 최적의 선택을 하는 알고리즘입니다. 현재의 선택이 지역적으로는 최적이지만, 전체적으로는 최적해를 보장하지 않을 수 있습니다. 따라서 그리디 알고리즘을 적용할 때에는 각 단계에서 최적의 선택을 하여 전체 해답을 찾아내는 과정을 이해하고 적용해야 합니다.정렬 알고리즘: 정렬 알고리즘은 주어진 데이터를 특정한 기준에 따라 정렬하는 알고리즘입니다. 이 문제에서는 차량의 경로를 진입 지점을 기준으로 오름차순으로 정렬해야 합니다. 대표적인 정렬 알고리즘으로는 선택 정렬,..

[프로그래머스][JAVA] 42861. 섬연결하기

💡 문제섬연결하기 (https://school.programmers.co.kr/learn/courses/30/lessons/42861)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념그래프 이론(Graph Theory):그래프는 정점(Vertex)과 간선(Edge)의 집합으로 이루어진 자료 구조입니다. 각 간선은 두 개의 정점을 연결하며, 방향이 있는 경우와 없는 경우로 나뉩니다.그래프는 방향성과 가중치가 있는 경우와 없는 경우로 구분됩니다. 이 문제에서는 방향성은 고려하지 않으며, 다리의 비용을 가중치로 취급합니다.최소 비용 신장 트리(Minimum Spanning Tree, MST):그래프의 모든 정점을 연결하는 트리 중에서, 간선의 가중치의 합이 최소인 트리를 의미합니다.이 때..

[프로그래머스][JAVA] 43162. 네트워크

💡 문제네트워크(https://school.programmers.co.kr/learn/courses/30/lessons/43162)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념그래프 이론그래프는 노드(또는 정점)와 간선으로 이루어진 자료 구조입니다. 노드는 개체나 개념을 나타내고, 간선은 이러한 노드들 간의 관계를 나타냅니다.그래프는 방향성이 있는 유향 그래프와 방향성이 없는 무향 그래프로 나뉩니다.컴퓨터 네트워크 문제에서는 주로 무향 그래프를 다루며, 연결된 노드들의 집합을 찾는 문제로 해석됩니다.그래프 탐색그래프 탐색은 그래프 내의 모든 노드를 방문하는 알고리즘입니다. 대표적으로 DFS와 BFS가 있습니다.DFS(깊이 우선 탐색)는 한 노드에서 시작하여 그래프의 최대 깊이까지 ..

[프로그래머스][JAVA] 43163. 단어변환

💡 문제단어변환 (https://school.programmers.co.kr/learn/courses/30/lessons/43163)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념🤓 문제 풀이🔨 문제 설명두 개의 단어 begin과 target, 그리고 단어의 집합 words가 주어집니다. begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾고자 합니다. 변환 과정은 다음과 같은 규칙을 따릅니다:한 번에 한 개의 알파벳만 바꿀 수 있습니다.변환 과정에서 항상 words에 있는 단어로만 변환할 수 있습니다.예를 들어, begin이 "hit", target이 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면, "hit" -> ..