코딩테스트
![간선 이어가기2 - 14284번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGXdKe%2FbtrroYoGt5O%2FK10l1K0rf95qVIBakMn9a1%2Fimg.png)
간선 이어가기2 - 14284번
풀이 방법 처음에 문제가 잘 이해되지 않았다. "간선의 순서를 조정할때 최솟값을 구하시오" 이 말은 그냥 최소 경로를 구하라는 말과 같다. 그래서 다익스트라를 이용해서 풀이했다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int s, t; int n = Integ..
![백양로 브레이크 - 11562번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAyIxO%2Fbtrq7UNec0N%2FpCdn9KuHxotPGCqofsGdw0%2Fimg.png)
백양로 브레이크 - 11562번
풀이 방법 그 동안 거의 모든 문제를 경로가 있으면 값을 주는 방식으로 생각해서 풀이했다. 이 문제는 생각을 좀 바꿔서 접근하는 게 필요했다. 일방통행을 양방향으로 바꾸는 비용을 구하는 문제이기 때문에 양방향 경로는 0, 일방통행 경로가 있으면 0을 주고 반대쪽으로는 1을 줘서 필요한 비용을 계산했습니다. (자기 자신으로는 무조건 갈 수 있기 때문에 0을 준다.) 내 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N, M,..
![회문 - 17609번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEUmxH%2FbtrpjxmlKNX%2F4tjAjRhVNxI6n02ruYX8kk%2Fimg.png)
회문 - 17609번
내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int T; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); T = Integer.parseInt(br.readLine()); for (int tc = 0; tc < T; tc++) { StringBuilder sb = new StringBuilder(br.readLine()); int x = 0; int y = sb.length() - 1; int che..
![해킹 -10282번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMNB5W%2FbtrpcPutDh7%2Fzfttpiz2aikeoZaBl3YRO1%2Fimg.png)
해킹 -10282번
내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int T, n, d, c; static ArrayList list; static boolean[] check; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); T = Integer.parseInt(br.readLine()); for (int tc = 0; tc < T; tc++) { int count = 0; int gap = 0; StringTokeni..
![2 x n 타일링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeojLgk%2FbtrpcOB9uqc%2FrdvCuoj2TAo3bidyv9YNyK%2Fimg.png)
2 x n 타일링
내 코드 class Solution { public int solution(int n) { int[] dp = new int[n + 1]; dp[0] = 1; dp[1] = 1; for (int i = 2; i
![소수 화폐](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwaTBY%2FbtrpiuWQqDo%2FRWLC8ckuzTmFKyYXlALUL1%2Fimg.png)
소수 화폐
풀이 방법 2 dp[2] = dp[2] + dp[2-2]; // 0 + 1 dp[3] = dp[3] + dp[3-2]; // 0 + 0 dp[4] = dp[4] + dp[4-2]; // 0 + 1 dp[5] = dp[5] + dp[5-2]; // 0 + 0 dp[6] = dp[6] + dp[6-2]; // 0 + 1 dp[7] = dp[7] + dp[7-2]; // 0 + 0 dp[8] = dp[8] + dp[8-2]; // 0 + 1 3 dp[3] = dp[3] + dp[3-3]; // 0 + 1 dp[4] = dp[4] + dp[4-3]; // 1 + 0 dp[5] = dp[5] + dp[5-3]; // 0 + 1 dp[6] = dp[6] + dp[6-3]; // 1 + 1 dp[7] = dp[7] ..
![줄세우기 - 2631번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwuKy2%2FbtrpcM4nVH4%2Fa1LGNP8H2KTKGKgolQRZvk%2Fimg.png)
줄세우기 - 2631번
내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int N; static int max = 0; static ArrayList list = new ArrayList(); static int[] dp; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); dp = new int[N]; for (int i = 0; i < N; i++) { dp[i..
![124 나라의 숫자](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLuQgI%2FbtrpcP07Rzw%2FpEPsll1kItKgRkCMAerWi1%2Fimg.png)
124 나라의 숫자
class Solution { public String solution(int n) { StringBuilder sb = new StringBuilder(); int temp = 0; while (n > 0){ temp = n % 3; n /= 3; if (temp == 0){ n -= 1; sb.insert(0, "4"); } else { sb.insert(0, temp); } } return sb.toString(); } }
![그대, 그머가 되어 - 14496번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd4jmI%2FbtroWoqktsk%2FDmI9G54Vr1ZUIloSPUH3B0%2Fimg.png)
그대, 그머가 되어 - 14496번
내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int a, b, N, M; static int count = 0; static boolean[] visited; static ArrayList list = new ArrayList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); a = Integer..
![악덕 영주 혜유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekMd2Q%2FbtroQFLERJC%2Fti53nguYd0PHSqm3Xq09R0%2Fimg.png)
악덕 영주 혜유
풀이 방법 MST를 이용해서 모든 마을을 연결할 수 있는 최소 비용을 구해주었다. 그 경로 중 마을과 마을을 이동할 때 최악의 비용이 얼마인지 구해주기 위해 MST를 저장해주었다. 최악의 비용을 구하기 위해서는 임의의 한곳에서 dfs로 가장 먼 노드를 찾아주고 그 노드를 시작으로 dfs를 하면 나오게 된다. 내 코드 package com.company; import java.io.*; import java.util.*; public class Main { static int K, N, max, start; static int[][] arr; static int[][] arr2; static boolean[] visited; static Queue pq = new PriorityQueue(); public..