코딩테스트/[백준] 코딩테스트 연습

    가장 긴 바이토닉 부분 수열 - 11054번

    가장 긴 바이토닉 부분 수열 - 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번

    스타트택시 - 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번

    소수상수근 - 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번

    스카이라인 쉬운거 - 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번

    불 - 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번

    월드컵 - 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번

    간선 이어가기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번

    백양로 브레이크 - 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번

    회문 - 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번

    해킹 -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..