분류 전체보기 795

백준 16954번 움직이는 미로 탈출 (JAVA)

https://www.acmicpc.net/problem/16954 16954번: 움직이는 미로 탈출 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 www.acmicpc.net 저는 BFS를 통해 문제를 해결하였습니다. 다른 BFS랑 다르게 시간에 따라 visited배열을 만들어 방문처리하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class ..

알고리즘 2022.08.11

백준 1406번 에디터 (JAVA)

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 저는 구현을 통해서 문제를 해결하였습니다. 저는 2개의 LinkedList를 통해 커서의 왼쪽에 있는 것과 오른쪽에 있는 것을 나누었습니다. 커서을 옮길때, 만약 왼쪽으로 옮긴다면 왼쪽의 LinedList의 맨 뒤에 있는 것을 오른쪽의 LinkedList 맨 앞에 놓도록 하였습니다. 오른쪽이라면 반대로 진행하도록 하였습니다. package BOJ.etc; import java.io.BufferedR..

알고리즘 2022.08.10

백준 14921번 용액 합성하기 (JAVA)

https://www.acmicpc.net/problem/14921 14921번: 용액 합성하기 홍익대 화학연구소는 다양한 용액을 보유하고 있다. 각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당 www.acmicpc.net 저는 투포인트를 이용해 문제를 해결하였습니다. 저는 입력을 한번 정렬하고 맨 앞과 맨 뒤를 가리키도록 하였습니다. 그리고 합이 0보다 크다면 ei를 줄여 합이 작아도록 하고, 0보다 크다면 si를 늘려 합이 커지도록 하였습니다. 그리고 합을 계속 비교하여 0에 가까운 것을 추적하도록 하였습니다. package BOJ.twopoint; import java.io.Buffe..

알고리즘 2022.08.09

백준 17822번 원판 돌리기 (JAVA)

https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 저는 2차원 배열을 통해 원판을 표현하여 인접한 것을 체크하기 용이하게 코드를 작성하였습니다. package BOJ.simulation; import java.awt.print.Pageable; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util...

알고리즘 2022.08.08

벡즌 17090번 미로 탈출하기 (JAVA)

https://www.acmicpc.net/problem/17090 17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net 저는 DFS를 통해 문제를 해결하였습니다. 각각의 지점을 DFS하면서 밖으로 나갈 수 있는지를 체크하였습니다. 저는 DP를 추가하여 DFS를 들어간 적이 있다면 이전 결과를 통해 바로 밖으로 나갈 수 있는지 없는지를 리턴하였습니다. package BOJ.dfs; import java.io.BufferedReader; import java.io.InputStreamReader; im..

알고리즘 2022.08.07

백준 1713번 후보 추천하기 (JAVA)

https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 저는 구현을 통해 해당 문제를 해결하였습니다. 저는 액자에 있는 사람을 Map에 넣어서 관리하였습니다. key는 사람의 번호, value는 액자에 넣은 시간으로 하였습니다. 추천된 사람이 액자에 없고 Map이 n보다 크다면 Map의 키를 돌면서 추천이 가장 작은 사람을 찾고 같다면 가장 이전에 추천된 사람을 찾아 없애고 이번에 추천된 사람을 넣었습니다. package BOJ.etc; im..

알고리즘 2022.08.06

백준 13335번 트럭 (JAVA)

https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 저는 구현을 통해서 문제를 해결하였습니다. 저는 큐를 통해 다리에 존재하는 트럭을 추적하였습니다. 현재 다리에 있는 무게를 추적하고 트럭이 들어갈 수 있는지를 확인하고 들어가지 못한다면 들어갈 수 있을 때까지 큐에서 트럭을 빼고 들어가야할 트럭을 넣었습니다. 마지막으로 들어가있는 트럭을 모두 빼면서 시간을 추적하였습니다. package BOJ.etc..

알고리즘 2022.08.05

백준 5557번 1학년 (JAVA)

https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 저는 DP를 통해 문제를 해결하였습니다. 저는 DP[인덱스][현재까지의 합] = 이때까지의 가짓수 로 저장하였습니다. 결과가 2^(63)-1 이기 때문에 long 타입으로 저장하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import j..

알고리즘 2022.08.04

배준 19621번 회의실 배정2 (JAVA)

https://www.acmicpc.net/problem/19621 19621번: 회의실 배정 2 서준이는 아빠로부터 N개의 회의와 하나의 회의실을 선물로 받았다. 각 회의는 시작 시간, 끝나는 시간, 회의 인원이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. 저는 DP[depth]로 저장하였습니다. (depth는 해당 인덱스에 대한 회의 정보입니다.) 저는 현재 시간보다 회의 시작시간이 크다면, dfs를 진행하여 현재 depth 이후로 진행하는 것들의 최대 값을 구하였고, DP[depth]에 저장하였습니다. package BOJ.dp; import java.io.BufferedReader; import ..

알고리즘 2022.08.03

백준 5430번 AC (JAVA)

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 저는 해당 문제를 구현을 통해서 문제를 해결하였습니다. 저는 특이하게 배열의 순서를 변경할 때, 배열의 순서를 역순으로 변경하지 않고, 맨 앞의 인덱스와 끝의 인덱스를 추적하였고, 현재 방향에 따라 앞의 인덱스나 끝의 인덱스를 늘리거나 줄였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.function.Function..

알고리즘 2022.08.02