전체 글 182

[99클럽 코테 스터디] 📝 Day25. 그래프 2

99클럽 코테 스터디 25일차 TIL + 그래프📍 오늘의 학습 키워드그래프 탐색 (BFS, DFS)공간 복잡도와 시간 복잡도Java 그래프 구현 및 탐색 알고리즘📝 공부한 내용 본인의 언어로 정리하기오늘은 그래프 탐색 알고리즘인 BFS와 DFS에 대해 공부했습니다. BFS는 너비 우선 탐색으로, 큐를 사용해 각 레벨을 차례로 탐색하여 최단 경로를 찾는 데 유용합니다. DFS는 깊이 우선 탐색으로, 스택이나 재귀를 사용해 가능한 깊이까지 탐색하며 경로의 존재 여부를 확인하는 데 효과적입니다. 각 알고리즘의 시간 복잡도와 공간 복잡도도 분석하여, 문제의 요구 사항에 따라 적절한 알고리즘을 선택하는 것이 중요하다는 것을 배웠습니다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지그래프에서..

[리트코드][JAVA] 1971. Find-if-path-exists-in-graph(그래프에 경로가 존재하는지 찾기)

💡 문제Find-if-path-exists-in-graph (https://leetcode.com/problems/find-if-path-exists-in-graph/description/)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념🤓 문제 풀이🔨 문제 설명주어진 양방향 그래프에서 n개의 정점이 있습니다. 각 정점은 0부터 n-1까지 번호가 매겨져 있으며, edges라는 2차원 정수 배열로 간선들이 표현됩니다. 여기서 각 edges[i] = [ui, vi]는 정점 ui와 vi 사이에 양방향 간선이 존재함을 나타냅니다. 모든 간선은 두 정점을 최대 한 번 연결하며, 자기 자신에 대한 간선은 없습니다.우리의 목표는 source에서 시작하여 destination으로 가는 유효한 ..

[99클럽 코테 스터디] 📝 Day24. 그래프

99클럽 코테 스터디 24일차 TIL + 그래프📍 오늘의 학습 키워드그래프 이론📝 공부한 내용 본인의 언어로 정리하기그래프 이론의 기본 개념과 관련된 문제 해결 전략그래프의 정점과 간선을 효율적으로 관리하는 방법들방향 벡터를 이용한 그래프 탐색과 경로 추적 기법자바에서의 Set 및 Map을 활용한 데이터 구조의 이해와 활용📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘은 그래프 이론 관련 문제를 풀면서 초기에 몇 가지 오류를 범했습니다. 처음에는 간선을 중복으로 세는 문제와 방향 벡터를 잘못 사용하여 문제가 발생했습니다.문제를 해결하기 위해 다양한 시도를 했습니다. 초기에는 방향 벡터와 그래프의 정점 및 간선 관리에 대한 이해가 부족했기 때문에 코드를 여러 번 수정하면서 테스트..

[프로그래머스][JAVA] 49190. 방의 개수

💡 문제방의 개수 (https://school.programmers.co.kr/learn/courses/30/lessons/49190)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념그래프 이론: 문제는 좌표 평면에서 주어진 방향에 따라 이동하며 그래프를 형성하는 것으로 볼 수 있습니다. 각 좌표는 정점을, 이동 경로는 간선을 나타냅니다.그래프 탐색 알고리즘: 주어진 방향 배열을 통해 좌표 평면을 탐색하며, 각 이동 경로를 그래프의 간선으로 처리합니다. 이때, 각 정점과 간선의 방문 여부를 관리하기 위해 해싱과 집합(Set)을 사용합니다.좌표 평면에서의 이동: 주어진 8방향 벡터를 사용하여 각 방향으로 좌표를 업데이트하고, 해당 좌표가 이미 방문한 적이 있는지 여부를 검사합니다.해싱..

[JAVA] 컬렉션과 관련 메소드 설명 및 예제 코드

ArrayListd 와 add 메소드용어: 컬렉션 프레임워크 (Collection Framework)설명: List는 Java의 컬렉션 프레임워크 중 하나로, 요소의 순서가 유지되며 중복 요소를 허용하는 인터페이스입니다. ArrayList는 List 인터페이스를 구현한 클래스 중 하나로, 배열 기반의 동적 크기를 가진 리스트입니다.import java.util.ArrayList;import java.util.List;public class ListExample { public static void main(String[] args) { List list = new ArrayList(); list.add("Apple"); list.add("Banana"); ..

[JAVA] 자바에서 Comparable과 Comparator 객체 비교의 이해와 활용

Comparable과 Comparator: 객체의 비교비교적으로 가장 어려운 개념 중 하나는 객체를 비교하는 것입니다. 자바에서는 이를 처리하기 위해 Comparable과 Comparator를 제공합니다. 1. Comparable: 객체 스스로 비교하는 능력Comparable은 객체가 스스로를 비교하는 능력을 갖추게 합니다. 이는 마치 각 객체가 "내가 더 큰가?", "내가 더 작은가?"를 직접 판단하는 것과 같습니다. 예를 들어, 숫자들의 배열이 있다면, Comparable을 구현한 숫자 클래스는 숫자 자체로 크기를 비교할 수 있습니다. 2. Comparator: 외부에서 비교하는 방법을 제공반면에 Comparator는 외부에서 비교 방법을 제공합니다. 즉, 객체가 스스로 비교하지 않고 외부에서 주어진..

[리트코드][JAVA] 786. K-th-smallest-prime-fraction (K번째로 작은 소수 분수)

💡 문제K-th-smallest-prime-fraction (https://leetcode.com/problems/k-th-smallest-prime-fraction/description/)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념🤓 문제 풀이🔨 문제 설명번역:786. K번째로 작은 소수 분수정렬된 정수 배열 arr이 주어지는데, 이 배열에는 1과 소수(prime number)들이 포함되어 있습니다. 배열의 모든 정수는 유일합니다. 또한 정수 k가 주어집니다.0 k번째로 작은 분수를 반환하세요. 답변은 크기가 2인 정수 배열로 반환하며, answer[0] == arr[i] 그리고 answer[1] == arr[j] 입니다. 예제 1:입력: arr = [1,2,3,5], k ..

[99클럽 코테 스터디] 📝 Day23. 이진탐색 2

99클럽 코테 스터디 23일차 TIL + 이진탐색📍 오늘의 학습 키워드이진 탐색(Binary Search)정렬된 배열에서 원하는 값을 빠르게 찾는 알고리즘시간 복잡도는 O(log n)으로 매우 효율적우선순위 큐(Priority Queue)데이터를 우선순위에 따라 저장하고 꺼내는 자료 구조힙(Heap)을 기반으로 구현되며, 삽입과 삭제 연산의 시간 복잡도는 O(log n)📝 공부한 내용 본인의 언어로 정리하기오늘은 이진 탐색과 우선순위 큐에 대해 공부했습니다. 이진 탐색은 정렬된 배열에서 특정 값을 빠르게 찾는 알고리즘으로, 시간 복잡도가 매우 효율적입니다. 우선순위 큐는 데이터를 우선순위에 따라 저장하고 꺼내는 자료 구조로, 힙을 기반으로 구현됩니다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어..

[99클럽 코테 스터디] 📝 Day22. 이분탐색

99클럽 코테 스터디 22일차 TIL + 이분탐색📍 오늘의 학습 키워드이분 탐색(Binary Search)📝 공부한 내용 본인의 언어로 정리하기이분 탐색과 완전 탐색을 통해 문제를 해결하는 방법에 대해 공부했습니다. 이분 탐색은 정렬된 배열에서 특정 값을 찾거나 최적화 문제를 해결할 때 사용하며, 탐색 범위를 반으로 줄여가며 효율적으로 탐색합니다. 반면에 완전 탐색은 가능한 모든 경우를 탐색하여 정확한 결과를 얻지만, 시간이 많이 걸릴 수 있습니다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘은 특정 문제를 이분 탐색과 완전 탐색으로 해결하는 방법을 공부했습니다. 문제를 푸는 과정에서 특히 이분 탐색의 원리와 활용하는 방법에 대해 자세히 알아보았습니다.🤔 어떻게 해결했는지?..

[프로그래머스][JAVA] 43236. 징검다리

💡 문제징검다리(https://school.programmers.co.kr/learn/courses/30/lessons/43236)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념1. 정렬 정렬은 데이터를 특정 순서대로 나열하는 작업입니다. 이 문제에서는 바위의 위치를 오름차순으로 정렬해야 하므로 정렬 알고리즘에 대한 이해가 필요합니다. Java에서는 기본적으로 Arrays.sort() 메서드를 사용할 수 있습니다. 2. 이분 탐색 알고리즘이분 탐색은 정렬된 배열에서 특정 값을 찾거나, 특정 조건을 만족하는 값을 찾는 데 사용됩니다. 이 문제에서는 가능한 최소 거리의 최댓값을 찾기 위해 이분 탐색을 사용합니다.이분 탐색의 기본 원리: 정렬된 배열의 중간 값을 선택하고, 목표 값이 중간..

[프로그래머스][JAVA] 42897. 도둑질

💡 문제도둑질 (https://school.programmers.co.kr/learn/courses/30/lessons/42897)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념🤓 문제 풀이🔨 문제 설명도둑이 동그랗게 배치된 집들에서 훔칠 수 있는 돈의 최댓값을 구하는 문제입니다. 이 문제는 동적 계획법(Dynamic Programming, DP)을 사용하여 해결할 수 있습니다.원형으로 배치된 집들을 보면 집들이 원형으로 배치되어 있으므로 첫 번째 집과 마지막 집이 연결되어 있다. 즉 즉, 첫 번째 집과 마지막 집은 동시에 털 수 없습니다인접한 두 집을 털면 경보가 울림에서 인접한 두 집을 동시에 털 수 없으므로, 선택한 집이 연속되지 않도록 해야 합니다.🔨 접근 방법집들이 원..

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

99클럽 코테 스터디 21일차 TIL + 동적계획법 (3)📍 오늘의 학습 키워드동적 계획법 (Dynamic Programming)📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지오늘의 문제는 원형으로 배치된 집들에서 도둑이 훔칠 수 있는 돈의 최댓값을 구하는 것이었다. 첫 번째 집과 마지막 집이 연결되어 있어 인접한 두 집을 동시에 털 수 없는 제약 조건이 있었다. 이 문제를 해결하기 위해 동적 계획법을 사용하기로 했다.🤔 어떻게 해결했는지🔖 참고링크 (https://develop-tracking.tistory.com/90)문제를 두 가지 경우로 나누어 해결했다첫 번째 집을 터는 경우.첫 번째 집을 털지 않는 경우. 각 경우에 대해 DP 배열을 정의하고 최댓값을 계산한 후, 두 결..

[프로그래머스][JAVA] 1843. 사칙연산

💡 문제사칙연산 (https://school.programmers.co.kr/learn/courses/30/lessons/1843)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념공간 복잡도와 시간 복잡도공간 복잡도: 알고리즘이 실행되는 동안 필요한 메모리 공간의 양을 의미합니다. 주로 데이터 구조의 크기에 따라 결정됩니다.시간 복잡도: 알고리즘이 실행되는 동안 소요되는 시간의 양을 의미합니다. 주로 입력 크기에 따라 결정됩니다.동적 계획법(Dynamic Programming)작은 부분 문제로 나누어 해결하고, 이를 통해 전체 문제를 해결하는 방법론입니다.중복되는 부분 문제를 효율적으로 해결하기 위해 메모이제이션 기법을 사용합니다.재귀적이거나 반복적인 방법으로 구현할 수 있습니다.메모..

[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" -> ..

[99클럽 코테 스터디] 📝 Day13. BFS

99클럽 코테 스터디 13일차 TIL + BFS📍 오늘의 학습 키워드BFS (너비 우선 탐색)DFS (깊이 우선 탐색)그래프 탐색 알고리즘최단 경로 문제백트래킹 (Backtracking)📝 공부한 내용 본인의 언어로 정리하기오늘은 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)에 대해 공부했습니다. BFS는 그래프 탐색 알고리즘 중 한 종류로, 현재 노드와 인접한 모든 노드를 먼저 탐색하는 방식입니다. 이를 통해 최단 경로를 찾거나 특정 상태에 도달하는 데 사용됩니다. 반면에 DFS는 현재 노드의 자식 노드를 먼저 탐색하는 방식으로, 그래프의 모든 노드를 탐색하거나 경로를 찾는 데 사용됩니다.오늘 푼 문제는 BFS를 사용하여 최단 경로를 찾는 문제를 풀었습니다.. 문제 해결을 위해 주어진 조건을 ..

[프로그래머스][JAVA] 87694. 아이템 줍기

💡 문제아이템 줍기 (https://school.programmers.co.kr/learn/courses/30/lessons/87694)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념이 문제를 해결하려면 주로 그래프 탐색 알고리즘과 2차원 배열을 다루는 방법을 이해해야 합니다. 아래는 문제를 푸는 데 필요한 주요 개념들입니다.1. BFS (Breadth-First Search)BFS는 그래프 또는 트리의 탐색 알고리즘 중 하나로, 너비 우선 탐색이라고도 합니다. BFS는 특정 노드에서 시작하여 인접한 모든 노드를 방문한 후, 방문한 노드를 기준으로 다시 인접한 노드들을 방문하는 방식으로 진행됩니다. BFS의 주요 특징은 다음과 같습니다:최단 경로 탐색: BFS는 최단 경로 문제를 해..

[프로그래머스][JAVA] 43164. 여행경로

💡 문제여행경로(https://school.programmers.co.kr/learn/courses/30/lessons/43164)자세한 문제 설명과 입출력 예는 링크를 참고해주세요.📝 선행 개념1. 그래프 이론그래프: 정점과 간선으로 이루어진 자료구조. 문제에서 공항을 정점, 항공권을 간선으로 볼 수 있습니다.인접 리스트: 각 정점에 대해 인접한 정점들을 리스트로 표현한 자료구조. 이 문제에서는 공항별로 도착 공항 리스트를 관리하기 위해 사용됩니다.2. 탐색 알고리즘깊이 우선 탐색 (DFS (Depth-First Search)):한 정점에서 시작하여 한 방향으로 갈 수 있는 모든 경로를 탐색한 후, 더 이상 갈 곳이 없으면 뒤로 돌아와 다른 경로를 탐색하는 방식. 재귀 호출을 통해 구현됩니다.깊이 ..

[99클럽 코테 스터디] 📝 Day16. 탐욕법 == Kruskal 알고리즘

99클럽 코테 스터디 16일차 TIL + 탐욕법 == Kruskal 알고리즘📍 오늘의 학습 키워드Kruskal 알고리즘Union-Find 자료구조탐욕법 알고리즘최소 비용 신장 트리📝 공부한 내용 본인의 언어로 정리하기오늘은 Kruskal 알고리즘과 Union-Find 자료구조에 대해 공부했습니다. Kruskal 알고리즘은 최소 비용 신장 트리를 구하는 그리디 알고리즘 중 하나로, 각 단계에서 최소 비용의 간선을 선택하여 신장 트리를 만들어 나갑니다. 이 과정에서 사이클을 방지하기 위해 Union-Find 자료구조를 사용합니다. Union-Find는 서로소 집합을 표현하고 관리하는 자료구조로, 각 원소가 속한 집합을 찾거나 합치는 연산을 지원합니다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 ..

[프로그래머스][JAVA] 84512. 모음사전

💡 문제모음사전 (https://school.programmers.co.kr/learn/courses/30/lessons/84512)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념완전탐색 (Brute Force):- 가능한 모든 경우의 수를 탐색하여 해답을 찾는 방법입니다. 이 문제에서는 'A', 'E', 'I', 'O', 'U'라는 5개의 문자로 만들 수 있는 길이 1부터 5까지의 모든 단어를 생성해야 합니다. 이를 통해 사전의 모든 단어를 구할 수 있습니다. 재귀 함수 (Recursive Function):- 함수가 자기 자신을 호출하여 문제를 해결하는 방법입니다. 이 문제에서는 재귀 함수를 사용하여 길이 1부터 5까지의 모든 단어를 생성합니다. 예를 들어, 현재 단어가 "A"..

[JAVA] 문자열 처리, 배열과 반복문, 조건문, 수학적 계산 개념

아래와 같은 기본 개념들을 학습하고 연습하면, 복잡한 문제를 더 쉽게 해결할 수 있습니다. 문제를 해결하는 과정에서 수학적 패턴을 발견하고 이를 코드로 구현하는 능력을 기르는 것이 중요하다고 생각한다. 이를 위해 다양한 알고리즘 문제를 풀어보고, 여러 가지 접근 방식을 시도해보자 문자열 처리 문자열 처리 (String Manipulation)문자열을 다루는 방법을 익혀야 합니다. 문자열의 길이를 구하는 방법, 특정 위치의 문자를 가져오는 방법 등을 학습해야 합니다.예제: String.length(), String.charAt(int index)public class StringExample { public static void main(String[] args) { String word..

📝 Day15. DFS

99클럽 코테 스터디 15일차 TIL + DFS📍 오늘의 학습 키워드그래프 탐색DFS (깊이 우선 탐색)연결된 컴포넌트 찾기인접 행렬📝 공부한 내용 본인의 언어로 정리하기오늘은 컴퓨터 네트워크 문제를 풀면서 DFS 알고리즘을 공부했다. DFS는 그래프에서 시작점부터 가능한 깊이까지 탐색한 후, 다시 돌아와 다른 경로를 탐색하는 방법이다. 이를 통해 연결된 모든 노드를 탐색할 수 있다. 네트워크 문제에서는 연결된 컴포넌트의 개수를 찾기 위해 각 컴퓨터를 방문하며 연결된 컴퓨터들을 모두 방문하는 DFS를 사용했다.📖 오늘의 회고📚 어떤 문제가 있었고, 나는 어떤 시도를 했는지네트워크 문제를 처음 접했을 때, 컴퓨터 간의 연결 상태를 어떻게 효율적으로 탐색할지 고민했다. 처음에는 모든 가능한 경로를 일..