알고리즘 778

백준 9655번 돌 게임 (JAVA)

https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 저는 DP를 통해 문제를 풀었습니다. DP를 통해 이전의 계산을 다시 하지 않도록하였고, 처음에 상근이 다음에 창영이가 번갈아가면서 하기 때문에 상근이가 이기면 창영이가 지고, 창영이가 이기면 상근이가 지기 때문에 다음으로 갈때 -1를 곱하여 문제를 풀었습니다. (1이 승리 -1이 패배입니다.) package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_9655 { private static final ..

알고리즘 2023.12.19

백준 11047번 동전 0 (JAVA)

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 저는 그리디를 통해 문제를 풀었습니다. 큰 돈으로 먼저 환전해주면 적은 개수로 할 수 있기에 큰 돈 먼저 많이 한전해주는 쪽으로 하고, 환전가능하면, 그 다음에는 환전 방법을 찾지 않도록하여 시간초과가 나오지 않게 하였습니다. import java.io.BufferedReader; import java.io.InputStreamRea..

알고리즘 2023.12.18

백준 16113번 시그널 (JAVA)

https://www.acmicpc.net/problem/16113 16113번: 시그널 zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는 www.acmicpc.net 저는 구현을 통해 문제를 풀었습니다. package BOJ.simulation; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_16113 { private static final char[][][] NUMBER = new char[][][]{ { // 0 {'#','#','#'}, {'#..

알고리즘 2023.12.17

백준 1012번 유기농 배추 (JAVA)

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 저는 BFS를 통해 문제를 풀었습니다. BFS로 배추인 인접한 것들을 확인하고 이 영역이 몇개나 되는지를 확인하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringToke..

알고리즘 2023.12.16

백준 8911번 거북이 (JAVA)

https://www.acmicpc.net/problem/8911 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 저는 구현을 통해 문제를 풀었습니다. 해당 경로에서 제일 작은 y값 제일 큰 y값 제일 작은 x값, 제일 큰 x값을 찾고 이들을 통해 사각형의 너비를 찾아 문제를 풀었습니다. package BOJ.simulation; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_8911_2 { public static vo..

알고리즘 2023.12.15

백준 11048번 이동하기 (JAVA)

https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 저는 DP를 이용하여 문제를 풀었습니다. DP를 이용해 중복되는 계산을 하지 않도록 하여 문제를 해결하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.function.Function; p..

알고리즘 2023.12.14

백준 2579번 계단 오르기 (JAVA)

https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 저는 DP를 이용하여 문제를 풀었습니다. DP를 이용해 중복되는 계산을 하지 않도록하여 시간초과가 나오지 않게하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class BOJ_2579_2 { public static void main(String..

알고리즘 2023.12.13

백준 7795번 먹을 것인가 먹힐 것인가 (JAVA)

https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 저는 이분탐색을 통해 문제를 해결하였습니다. 이분탐색으로 해당 값을 찾고 또는 보다 큰 값의 위치를 찾고 거기서 부터 밑의 값이 같다면 밑으로 내려가주면서 같은 값 중 가장 낮은 인덱스나 해당 값보다 가장 큰 작은 값을 찾아 문제를 풀었습니다. import java.io.BufferedReader; import java.io.InputStream..

알고리즘 2023.12.12

백준 1654번 랜선 자르기 (JAVA)

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 저는 이분탐색으로 문제를 풀었습니다. 시간복잡도가 n*k이 되면 시간안에 안 돌아가기 때문에 이분탐색으로 시간복잡도 n*log(k)로1초 안에 진행되도록 하였습니다. package BOJ.binarysearch; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.String..

알고리즘 2023.12.11

백준 1914번 하노이 탑 (JAVA)

https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 저는 재귀를 통해 문제를 풀었습니다. 시작 가운데 목표 지점을 1,2,3이라 할 때 1에서 먼저 맨 밑에 제외하고 나머지는 2에 놓고, 맨 밑을 3에 넣고 2에 놓은 것을 3에 넣어야합니다. 이를 재귀적으로 풀어 문제를 풀었고, 20 이상인 경우에는 공식을 통해 문제를 풀어 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import ja..

알고리즘 2023.12.10