BOJ

    [백준, BOJ 10773] 제로 (java)

    https://www.acmicpc.net/problem/10773메모리: 23,064 KB , 시간: 200 ms사용 알고리즘: 자료 구조, 구현, 스택import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Stack;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int K = Integer.parseInt(br.readLine()); // 재민이가 부르..

    [백준, BOJ 2607] 비슷한 단어 (java)

    https://www.acmicpc.net/problem/2607메모리: 14,132 KB , 시간: 100 ms사용 알고리즘: 구현, 문자열import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 기준이 되는 문자열 char[] first = br.r..

    [백준, BOJ 13414] 수강신청 (java)

    https://www.acmicpc.net/problem/13414메모리: 72,148 KB , 시간: 712 ms사용 알고리즘: 자료 구조, 해시를 사용한 집합과 맵, 구현수강신청을 한 순서대로 입력을 받으며학번을 key 값으로 같은 학번이 나온 횟수를 value로 Map에 넣어준다. 다시 한번 수강신청을 한 순서대로 학번을 보며map에서 학번에 해당하는 key값을 가진 value를 1씩 줄여준다.만약 value가 이미 1이라면, 해당 학번이 마지막으로 수강신청 버튼을 누른 것이므로답으로 출력해준다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public sta..

    [백준, BOJ 14950] 정복자 (java)

    https://www.acmicpc.net/problem/14950메모리: 26,704 KB , 시간: 376 ms사용 알고리즘: 그래프 이론, 최소 스패닝 트리처음에 다익스트라로 풀었다가, 알고리즘 분류를 보고 크루스칼 알고리즘으로도 풀 수 있겠다고 알게 돼서 다시 크루스칼로 풀었다...알고리즘 며칠 안 했다고 이전에는 당연히 크루스칼로 풀었을 문제를 다익스트라로 풀었네,,import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { static int[] parent; public static..

    [백준, BOJ 9024] 두 수의 합 (java)

    https://www.acmicpc.net/problem/9024메모리: 231,292 KB , 시간: 2,072 ms사용 알고리즘: 정렬, 이분 탐색, 두 포인터처음엔 TreeSet으로 K - arr[i]에 해당하는 수가 있는지(contains) 검사하고,없다면 큰 수 중 가장 작은 수(higher)와 작은 수 중 가장 큰 수(lower)를 검사해서 구했었다.-> 메모리 초과 그다음 이분 탐색으로 K - arr[i]보다 작은 수 중 가장 큰 수를 구하고, 이분 탐색으로 구한 수와 그 수보다 큰 수 중 가장 작은 수를 비교하여 구했다.정답은 뜨는데, 주석 쓰고 다시 돌렸더니 메모리 초과... 같은 코드 다시 돌렸는데 또 정답약간 불안 불안한 듯.. 문제 풀고 투 포인터로 풀 수 있다는 거 알고 투 포인터..

    [백준, BOJ 2058] 원자의 에너지 (java)

    https://www.acmicpc.net/problem/2058메모리: 16,212 KB , 시간: 140 ms사용 알고리즘: 다이나믹 프로그래밍, 트리에서의 다이나믹 프로그래밍, 트리이 문제는 구현보다 문제 자체를 이해하는 게 더 어려웠다. 문제를 간단히 정리하면,원자의 에너지 상태 = 노드라고 보고'어떤 에너지 상태(A)에서 다른 에너지 상태(B)로 변할 수 있는 방법은 한 가지뿐'이라는 문장으로어떤 노드(A)에서 다른 노드(B)로 갈 수 있는 방법이 하나뿐인 트리 문제라는 것을 알 수 있다. 어떤 노드(A) 값에서 어떤 양성자를 더하거나 빼서 다른 노드(B) 값이 나온다면 두 노드는 서로 연결되어 있다.A 노드에서 모든 양성자의 값을 더하거나 빼 본다.A 노드에서 양성자 값을 더하거나 뺀 값이 다..

    [백준, BOJ 13424] 비밀 모임 (java)

    https://www.acmicpc.net/problem/13424메모리: 38,680 KB , 시간: 444 ms사용 알고리즘: 플로이드-워셜, 그래프 이론, 최단 경로N의 최대가 500 이하인 100이기 때문에 플로이드 워셜을 이용해 풀었다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.StringTokenizer;public class Main { static final int MAX = 10_000_000; public static void main(String[] args) throws Excepti..

    [백준, BOJ 20168] 골목 대장 호석 - 기능성 (java)

    https://www.acmicpc.net/problem/20168메모리: 14,232 KB , 시간: 108 ms사용 알고리즘: 데이크스트라, 그래프 이론, 최단 경로양방향 통행이니 무한 루프에 빠지지 않게 visited 배열로 체크를 했다.A에서 i로 오는 방법이 여러 가지가 있을 수 있는데,visited 배열을 확인하여 이전에 확인한 방법보다 최대 비용이 작을 때나, 총 비용이 작을 경우에만 i에서 B로 가는 방법을 다시 확인해준다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.PriorityQueue;import java.util.StringTokeniz..

    [백준, BOJ 2022] 사다리 (java)

    https://www.acmicpc.net/problem/2022메모리: 14,576 KB , 시간: 112 ms사용 알고리즘: 이분 탐색, 수학, 피타고라스 정리수학 공식이 적용되는 것 같은데, 적절한 공식이 떠오르지 않아 블로그를 참고했다. 공식을 대입하여, 이분 탐색으로 두 건물 사이의 거리를 오차 범위 이내에 오도록 하는 값을 찾으면 된다.이분 탐색 시작 시에 값의 범위는 0 ~ Math.min(x, y)인데, 두 건물 사이의 거리가 사다리의 길이보다 길 수는 없기 때문이다.res가 c보다 높은 곳에 위치한다면, 가운데 값을 크게 해야 더 낮은 res를 구할 수 있기 때문에 이분 탐색의 왼쪽 값을 변경해 주고res가 c보다 낮은 곳에 위치한다면, 가운데 값을 낮게 해야 더 높은 res를 구할 수 ..

    [백준, BOJ 1581] 락스타 락동호 (java)

    https://www.acmicpc.net/problem/1581메모리: 14,200 KB , 시간: 124 ms사용 알고리즘: 많은 조건 분기FF가 있다면 무조건 모든 FF를 먼저 넣어주는 것이 좋다.이후 FS가 있다면 FS를 하나 넣어 느리게 시작하는 음악을 넣어주러 가고, 또 모든 SS를 넣어준다.이후 SF와 FS를 번갈아가면서 넣어주면 최대한 많은 곡을 넣어줄 수 있다. 이를 if문을 통해 조건 분기만 잘 구현해주면 된다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args..