본문 바로가기

알고리즘/백준

(89)
백준 20055 컨베이어 벨트 위의 로봇(Java) https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부�� www.acmicpc.net 삼성 기출문제다.(2021년 상반기용) 주어진 조건대로 구현하면 된다! import java.io.*; import java.lang.*; import java.util.*; public class boj20055 { static int N, K, turn; static int[] conveyor; static ArrayList robots = new ArrayList()..
백준 15653 구슬 탈출 4(JAVA) https://www.acmicpc.net/problem/15653 15653번: 구슬 탈출 4 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 면접 준비때문에 너무 바쁜걸... 간만에 한 문제 풀었다 ㅠㅠ 이 문제는 주어진 조건대로 풀면된다! 간단함! import java.io.*; import java.util.Arrays; import java.util.Objects; import java.util.StringTokenizer; public class boj15653 { static ..
백준 13334 철로(JAVA) https://www.acmicpc.net/problem/13334 13334번: 철로 입력은 표준입력을 사용한다. 첫 번째 줄에 사람 수를 나타내는 양의 정수 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 각 줄에 정수 쌍 (hi, oi)가 주어진다. 여기서 hi와 oi는 −100,000,000이상, 100,000,0 www.acmicpc.net 끝점을 기준으로 정렬하고 우선순위 큐를 활용한다. 끝점을 기준으로 오름차순 정렬을 하면 아래 그림처럼 된다. 이 상태에서 집과 회사 중 더 작은 값을 기준으로 정렬한다. 여기서 유의해야하는게, 무조건 집이 회사보다 왼쪽에 있다고 생각하기 쉬운데 그렇지 않다. 그림으로 보자면 이렇게 두 가지 경우가 가능하다. 그러므로 입력값을 받을 때 대소 비교를..
백준 1938 통나무 옮기기 https://www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4
백준 1670 정상회담 2 https://www.acmicpc.net/problem/1670 1670번: 정상 회담 2 첫째 줄에 정상 회담에 참가한 사람의 수 N이 주어진다. 이 값은 10,000보다 작거나 같은 짝수이다. www.acmicpc.net 다이나믹 프로그래밍 문제 점화식은 f(n) = { f(n-2) * f(0) } + { f(n-4) * f(2) } + ... + { f(k - m) * f(m-2) } + ... + { f(0) * f(n-2) }다. 예를 들어서 f(4) = f(2) * f(0) + f(0) * f(2) f(6) = f(4) * f(0) + f(2) * f(2) + f(0) * f(4) 이다. 그림을 보며 이해해보자 . 여섯명짜리 악수를 대표로 살펴보자 이렇게 세 가지 경우가 나올 수 있다. 8개..
백준 1219 오민식의 고민(Java) https://www.acmicpc.net/problem/1219 1219번: 오민식의 고민 첫째 줄에 도착 도시에 도착할 때, 가지고 있는 돈의 액수의 최댓값을 출력한다. 만약 오민식이 도착 도시에 도착하는 것이 불가능할 때는 "gg"를 출력한다. 그리고, 오민식이 도착 도시에 도착�� www.acmicpc.net 벨만 포드 알고리즘을 활용한다. 코드를 보면 이해할 수 있을 것 같다. import java.io.*; import java.util.*; public class Main { private static int N; private static int startCity; private static int arriveCity; private static int nTransport; private ..
백준 9661 : 돌 게임 7 https://www.acmicpc.net/problem/9661 9661번: 돌 게임 7 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000) www.acmicpc.net 시뮬레이션을 해보면 승패승승패가 반복되는 걸 확인할 수 있다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); BufferedReader br = new BufferedReader(new InputStreamReade..
백준 1111 IQ Test(Java) https://www.acmicpc.net/problem/1111 1111번: IQ Test 다음 수를 출력한다. 만약 다음 수가 여러 개일 경우에는 A를 출력하고, 다음 수를 구할 수 없는 경우에는 B를 출력한다. www.acmicpc.net 내 아이큐를 테스트하는 것 같은 문제.. arr[i+1] - arr[i]를 arr[i] - arr[i-1] 로 나누면 a를 구할 수 있다. 점화식을 세워보면 금방 알 수 있당 a를 구하면 b를 구하는 건 껌이다. A를 출력해야하는 상황과 B를 출력해야하는 상황을 잘 구별하는 게 이 문제의 핵심이다. 둘 모두 "주어진 배열의 다음 숫자"에 대한 것임을 명심하자! 만약 배열의 크기가 1이라면 그 다음에 어떤 숫자든 올 수 있다. --> A 예를 들어서 [3] 그 숫자..
백준 16946 벽 부수고 이동하기4(JAVA) https://www.acmicpc.net/problem/16946 16946번: 벽 부수고 이동하기 4 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 � www.acmicpc.net 간만에 알고리즘을 푸려니까 잘 안된다 이 문제는 벽이 없는 구간들을 그룹화 하는게 중요하다. 1 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 위와 같은 인풋이 들어오면 다음과 같이 그룹화해준다. 1 10 10 1 11 1 1 12 11 11 1 12 11 11 1 12 각각을 그룹화 한 다음 Map에 그 그룹이 몇개인지 저장한다. 그룹 10 : 2 그룹 11 : ..
백준 14867 물통(JAVA) https://www.acmicpc.net/problem/14867 14867번: 물통 표준 입력으로 물통 A의 용량을 나타내는 정수 a(1 ≤ a < 100,000), 물통 B의 용량을 나타내는 정수 b(a < b ≤ 100,000), 최종 상태에서 물통 A에 남겨야 하는 물의 용량을 나타내는 정수 c(0 ≤ c ≤ a), 최� www.acmicpc.net 모든 경우의 수를 탐색하는 BFS... DFS로 하면 시간초과 뜬다. import java.io.*; import java.util.*; import java.util.concurrent.LinkedBlockingDeque; public class boj14867 { static class Pair { int n ,m; Pair(int a, int ..