🔗 문제 링크 16953번: A → B 첫째 줄에 A, B (1 ≤ A B로 가도 되며, B -> A로 숫자가 줄어들면서 진행해도 됩니다. - 저는 A -> B의 방향으로 구현했습니다. - 연산은 두가지 입니다. - 2를 곱하는 경우 - 숫자의 마지막에 문자 1을 붙이는 경우 - 두가지 과정에 대한 재귀 메소드를 구현한 후, A가 B보다 커지는 경우에는 메소드 종료를, A == B인 경우에는 그때까지의 count 값을 담습ㄴ디ㅏ. - 문제에서 답을 반환할 때 1을 더한 값을 반환하라고 제시되어있기 때문에 저는 count..
🔗 문제 링크 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 📖 풀이 과정 - 이진 트리의 기본적인 개념을 파악할 수 있는 문제였습니다. - tree와 node 모두 내부 클래스로 구현하였습니다. - 각 주석 별로 메소드에 대해 설명을 추가했습니다. 💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void mai..
🔗 문제 링크 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 📖 풀이 과정 - 트리 유형의 문제입니다. - 풀이에는 DFS(스택, 재귀), BFS 여러가지 풀이가 있지만 저는 DFS(재귀)를 이용해서 풀었습니다. - 트리에 대해서 처음 시작하는 분들에게 좋은 문제라고 생각합니다. 💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java..
🔗 문제 링크 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 📖 풀이 과정 - 다익스트라 알고리즘 유형 문제입니다. - 다익스트라 알고리즘 개념을 이해하고 처음 접할 때 기본기를 익히기 좋은 문제입니다. - 따로 풀이는 작성하지 않겠습니다. 주석과 코드를 따라가시면 충분히 이해하실 수 있을 것이라 생각합니다 - 이번 문제는 코드만 봐주시면 좋을 것 같아요! 💻 코드 import java.io.BufferedReader; import java.io.IOException; ..
🔗 문제 링크 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 📖 풀이 과정 - BFS 유형의 문제입니다. - 특별한 조건 생각없이 하나씩 벽을 다 부숴보면서 해보려니 시간초과가 발생했습니다.(너무 문제를 안일하게 생각한 것 같습니다.) - 즉, BFS내에서 벽을 부수는 것에 대한 조건을 추가해야 합니다. - 그러므로, 내부 클래스 Point에 거리와 공사횟수에 대해 변수를 추가했습니다. - 기존에 저는 visited 2차원 배열을 boolean 타입으로 선언하여 방문을 체크했지만 이..
🔗 문제 링크 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 📖 풀이 과정 - 누적합과 다이나믹 프로그래밍 유형의 문제입니다. - 2차원 배열을 선언하여 입력 값을 할당합니다. - dp 2차원 배열을 선언하여 각 행, 열마다의 값을 누적하여 더하여 계산합니다. - 이 때, dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + arr[i][j]의 식을 이용합니다. - 또한, 누적합을 이용하여 해당하는 범위의 값을 계산하려면, dp..