프로그래머스 12

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

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

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

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

[프로그래머스][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" -> ..

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

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

[프로그래머스][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] 84021. 퍼즐조각채우기

💡 문제퍼즐조각채우기(https://school.programmers.co.kr/learn/courses/30/lessons/84021)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념🤓 문제 풀이문제 설명주어진 문제는 게임 보드의 빈 공간에 테이블 위의 퍼즐 조각을 적절히 놓아서 최대한 많은 칸을 채우는 것입니다. 퍼즐 조각을 회전시킬 수는 있지만 뒤집을 수는 없습니다. 각 퍼즐 조각은 인접한 칸이 비어있으면 안 됩니다.문제 접근 방법퍼즐 조각 추출:BFS를 사용하여 테이블에서 퍼즐 조각을 추출합니다.퍼즐 조각을 추출할 때, 모든 가능한 회전을 고려하여 저장합니다.빈 공간 추출:BFS를 사용하여 게임 보드에서 빈 공간을 추출합니다.퍼즐 조각 맞추기:각 빈 공간에 대해 모든 퍼즐 ..

[프로그래머스][JAVA] 86971. 전력망을 둘로 나누기

💡 문제전력망을 둘로 나누기 (https://school.programmers.co.kr/learn/courses/30/lessons/86971)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념🤓 문제 풀이주어진 문제는 송전탑 네트워크에서 하나의 전선을 끊어 두 개의 전력망으로 나누었을 때, 각 전력망이 가지고 있는 송전탑 개수의 차이를 최소화하는 것입니다. 이를 위해, 각 전선을 하나씩 끊어보고, 끊어진 두 개의 전력망의 송전탑 개수를 계산한 후, 차이를 비교하여 최소값을 찾아야한다.송전탑의 개수가 최대한 비슷하도록 두 전력망으로 나누는 것입니다. 이는 그래프에서 하나의 엣지를 끊고 연결된 두 컴포넌트의 크기를 계산하는 문제로 접근할 수 있습니다. 입출력 예 1)- 4번과 7번을..

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

💡 문제모음사전 (https://school.programmers.co.kr/learn/courses/30/lessons/84512)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념 🤓 문제 풀이이 문제는 완전탐색을 사용하여 각 자리수의 알파벳에 대한 가중치를 계산하여, 주어진 단어의 사전 순서를 찾아냅니다. 사전에 길이 5 이하의 모든 단어를 만들 수 있는 알파벳 모음 'A', 'E', 'I', 'O', 'U'가 사용된다고 합니다. 이 단어들을 사전 순서대로 배열했을 때, 주어진 단어 **word**가 몇 번째에 위치하는지 찾는 문제입니다. 이를 해결하기 위해 완전탐색을 사용합니다. 이를 통해 주어진 단어가 몇 번째 단어인지 효율적으로 찾을 수 있습니다.완전탐색을 위해서는 각 위..

[프로그래머스][JAVA] 이중 우선순위 큐

💡 문제이중우선순위큐 (https://school.programmers.co.kr/learn/courses/30/lessons/42628)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념이중 우선순위 큐는 최댓값과 최솟값을 모두 효율적으로 처리할 수 있는 자료구조 Collections.reverseOrder()Collections.reverseOrder()는 Java의 Collections 클래스에서 제공하는 정적 메서드로, 기본 정렬 순서를 반대로 하는 데 사용됩니다. 이 메서드는 Comparator 객체를 반환하며, 이 객체를 사용하여 컬렉션을 내림차순으로 정렬할 수 있습니다. 이는 기본 데이터 타입뿐만 아니라 커스텀 객체에도 적용할 수 있으며, Comparable 인터페이스를 ..

[프로그래머스][JAVA] 디스크 컨트롤러

💡 문제챌린저: 디스크 컨트롤러 (https://school.programmers.co.kr/learn/courses/30/lessons/42627)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 📝 선행 개념힙(Heap) 이란힙(Heap)은 완전 이진 트리의 일종으로, 특정한 조건을 만족하는 자료구조입니다. 힙은 다음 두 가지 유형이 있습니다최대 힙(Max Heap): 부모 노드의 값이 항상 자식 노드의 값보다 크거나 같은 힙. 따라서 루트 노드의 값이 가장 큽니다.최소 힙(Min Heap): 부모 노드의 값이 항상 자식 노드의 값보다 작거나 같은 힙. 따라서 루트 노드의 값이 가장 작습니다.힙의 특성 덕분에 힙은 우선순위 큐(Priority Queue)를 구현하는 데 사용됩니다. 우선순위 큐..