코딩테스트/[백준] 코딩테스트 연습
![가장 긴 바이토닉 부분 수열 - 11054번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMeozV%2FbtrsLwDTxjM%2FV1hmk4DvtlqflD0sMu76AK%2Fimg.png)
가장 긴 바이토닉 부분 수열 - 11054번
풀이 방법 각 원소들마다 양쪽을 기준으로 최장 부분 수열을 개수를 구해주었다. 각 dp에 저장된 값을 이용해서 바이토닉 부분 수열을 구할 수 있다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int[] arr, dp1, dp2; public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(n..
![스타트택시 - 19238번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuOoTA%2FbtrsL9nQE99%2FShjkn5yfFabmuCX2wUGs8k%2Fimg.png)
스타트택시 - 19238번
풀이 방법 bfs를 이용해서 풀이했다. 이 문제에서 생각해야 할게 각 손님마다 출발지와 목적지는 다르고 출발지는 각각 다르다는 말이다. 결국 손님들의 목적지는 같을 수 있고 한 손님의 출발지가 다른 손님의 목적지가 되는 경우가 생긴다. 이 경우만 고려해서 잘 풀어주면 된다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { static int[][..
![소수상수근 - 9421번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmORhN%2FbtrstXwolM2%2F0W71Iodjahe6XQFlckXkeK%2Fimg.png)
소수상수근 - 9421번
내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Stack; import java.util.StringTokenizer; public class Main { static HashSet set = new HashSet(); public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N..
![스카이라인 쉬운거 - 1863번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBlGan%2FbtrstJRZFQC%2FcUWllgGi2q0P4PiVy5GDXk%2Fimg.png)
스카이라인 쉬운거 - 1863번
풀이 방법 스택을 이용해서 높이가 낮아질 때 마다 건물의 개수를 세어주었다. 스택에 현재 바뀐 높이보다 높은 건물을 모두 세어주면 된다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..
![불 - 5427번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0uw8Q%2Fbtrrr44mdiI%2FTbT9CVkpmeMfAbcAYBFVDk%2Fimg.png)
불 - 5427번
내 코드 package com.company; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.PriorityQueue; import java.util.Queue; import java.util.StringTokenizer; public class Main { static char[][] arr; static int w, h, time; static Queue fireQ = new LinkedList(); static PriorityQueue pq = new PriorityQueue(); static int[][] way = {{0, 1}, {0, -1},..
![월드컵 - 6987번](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPR8MN%2FbtrrB4IIFxD%2F9uHSkeZPe6kn8mBmlOVG61%2Fimg.png)
월드컵 - 6987번
풀이 방법 처음엔 그냥 승 패를 비교하고 무승부일경우 따로 고려해서 풀이했는데 올바른 풀이가 아니었다. 고려해야 할 게 각 팀들은 중복없이 다른 팀들과 경기를 해야하고 같은 팀과 두번 이상 할 수 없다. 그래서 총 경기수는 30번이 된다. 이를 고려해서 dfs로 풀이했다. 내 코드 package com.company; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[][] arr; static boolean check; static int[] teamA = {0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, ..
![간선 이어가기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..