Coding Test/알고리즘 실전

Coding Test/알고리즘 실전

[16562] 친구비

✔ 친구비[백준 16562]코드 구현하기/* * 문제 분석하기 * : 친구의 친구들을 모두 모아 같은 집합으로 합치도록 한 후, 집합의 대표 노드에 해당하는 친구와 친구를 하도록 함 *//* * 손으로 풀어보기 * 1. 친구 관계에 따라 친구비가 더 적은 친구를 대표 노드로 하여 집합으로 묶도록 함 * 2. 집합의 대표 노드에 해당하는 친구와 친구를 하도록 하여 비용을 증가 * 3. 가지고 있는 돈으로 모든 학생을 친구로 만들 수 있다면, 친구로 만드는데 드는 최소비용을 출력 * 4. 만약 친구를 다 사귈 수 없다면 Oh no를 출력 *//* * 16562) 친구비 */public class Main { static BufferedReader br = new BufferedReader(new I..

Coding Test/알고리즘 실전

[2252] 줄 세우기

✔ 줄 세우기[백준 2252]코드 구현하기/* * 문제 분석하기 * : 각 키를 비교한 학생들을 저장한 후, 진입 차수의 개수가 0개인 학생부터 위상정렬하도록 함 *//* * 손으로 풀어보기 * 1. 인접 리스트에 학생 데이터와 진입 차수를 저장 * 2. 진입 차수의 개수가 0인 학생을 큐에 저장 * 3. 위상 정렬 알고리즘을 수행 * 4. 위상 정렬한 결과를 출력 *//* * 2252) 줄_세우기 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M; static ArrayList> arr = new ArrayList>();..

Coding Test/알고리즘 실전

[1753] 최단경로

✔ 최단경로[백준 1753]코드 구현하기/* * 문제 분석하기 * : 다익스트라 알고리즘을 이용해 시작점에서 다른 모든 정점으로의 최단 경로를 구하도록 함 *//* * 손으로 풀어보기 * 1. 인접 리스트에 정점에 대한 간선 정보를 저장 * 2. 시작점을 큐에 넣고 다익스트라 알고리즘을 수행 * 3. 각 정점까지 가는 최단 경로의 값을 출력 * 경로가 존재하지 않을 경우 INF를 출력 *//* * 1753) 최단경로 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int V, E, K; static ArrayList[] list; /..

Coding Test/알고리즘 실전

[20210] 파일 탐색기

✔ 파일 탐색기[백준 20210]코드 구현하기/* * 문제 분석하기 * : 정렬 규칙에 맞춰 조건을 세워 정렬하도록 함 *//* * 손으로 풀어보기 * 1. 문자열의 문자를 비교해 둘 다 숫자일 경우, 수를 비교해 더 작은 것이 앞에 오도록 함 * 이때 두 수가 같다면 0의 개수가 적은 것이 앞에 오도록 함 * 2. 둘 다 문자일 경우, 알파벳의 순서대로 더 작은 것이 앞에 오도록 함 * 이때 두 알파벳이 같은 알파벳이라면 대문자가 앞에 오도록 함 * 3. 하나는 문자, 하나는 숫자일 경우, 숫자가 앞에 오도록 함 * 4. 두 문자열을 비교한 후 뒤에 문자가 더 붙어있는 문자열이 있다면, 뒤에 오도록 함 *//* * 20210) 파일탐색기 */public class Main { sta..

Coding Test/알고리즘 실전

[10986] 나머지 합

✔ 나머지 합[백준 10986]코드 구현하기/* * 문제 분석하기 * : 수들끼리의 누적합을 구한 후, 이들이 M으로 나누어 떨어지는지 확인하여 구간의 개수를 증가시키도록 함 * 또한 나머지가 같은 구간을 이용해 M으로 나누어 떨어지는지 확인하도록 함 * 예) A = {1, 2, 3, 1, 2}, M = 3 * S[1] = 1 + 2 = 3 -> M으로 나누어 떨어짐 * S[0] = 1 -> 나머지 1이 발생 * S[3] = 1 + 2 + 3 + 1 = 7 -> 나머지 1이 발생 * 그러므로 S[1] ~ S[3] = 2 + 3 + 1 -> M으로 나누어 떨어짐 *//* * 손으로 풀어보기 * 1. 수들끼리의 누적합을 구함 * 2. 누적합을 확인해 M으로 나..

Coding Test/알고리즘 실전

[4256] 트리

✔ 트리[백준 4256]코드 구현하기/* * 문제 분석하기 * : 후위 순회에서는 왼쪽-오른쪽-루트 순서로 이동하므로, 전위 순회와 중위 순회 값을 이용해 순회하도록 함 * 예) 전위 : 3, 6, 5, 4, 8, 7, 1, 2 / 중위 : 5, 6, 8, 4, 3, 1, 2, 7 * - 루트 노드 : 3 / 왼쪽 서브트리 : 5, 6, 8, 4 / 오른쪽 서브트리 : 1, 2, 7 * * - 루트 노드 : 6 / 왼쪽 서브트리 : 5 / 오른쪽 서브트리 : 8, 4 * - 루트 노드 : 5 -> [5] * - 루트 노드 : 4 / 왼쪽 서브트리 : 8 -> [5, 8, 4] * - [5, 8, 4, 6] * * - 루트 노드..

Coding Test/알고리즘 실전

[1174] 줄어드는 수

✔ 줄어드는 수[백준 1174]코드 구현하기/* * 문제 분석하기 * : 백트래킹을 이용해 재귀하며 9 ~ 0의 숫자에 대해 해당 수를 선택할지 말지 여부를 찾아 조합하도록 함 * 이때 10개의 수에 대해 모두 재귀했다면 멈추도록 함 *//* * 손으로 풀어보기 * 1. 백트래킹을 이용해 재귀하며 9 ~ 0의 숫자에 대해 해당 수를 선택할지 말지 여부를 찾아 조합 * 2. 이를 정렬하여 N번째 작은 줄어드는 수를 출력/* * 1174) 줄어드는_수 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N; static int[] di..

Coding Test/알고리즘 실전

[20444] 색종이와 가위

✔ 색종이와 가위[백준 20444]코드 구현하기/* * 문제 분석하기 * : 가로로 색종이를 자르는 횟수를 이분 탐색하며 잘리는 색종이의 개수를 구하도록 함 * 이를 반복하여 K개의 색종이 조각을 만들 수 있는지 찾도록 함 *//* * 손으로 풀어보기 * 1. 가로로 색종이를 자르는 횟수를 0 ~ N / 2로 정하여 이분 탐색 * 2. 이분 탐색하며 가로로 색종이를 자르는 횟수에 따라 잘리는 색종이의 개수를 구하도록 함 * 3. 이를 반복하여 K개의 색종이 조각을 만들 수 있는지 찾도록 함/* * 20444) 색종이와_가위 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System..

김깅긍
'Coding Test/알고리즘 실전' 카테고리의 글 목록 (6 Page)