전체 글 795

백준 2003번 수들의 합2 (JAVA)

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 저는 투포인트를 이용해 문제를 풀었습니다. 투포인트로 사이 인덱스의 합을 추적하였고, 합이 m이상이면 결과값을 늘려 문제를 해결하였습니다. package BOJ.twopoint; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; p..

알고리즘 2023.11.21

백준 11659번 구간 합 구하기 4 (JAVA)

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 저는 누적합을 통해 문제를 해결하였습니다. 누적합을 통해 해당 인덱스까지의 합을 구하였습니다. 입력으로 들어오는 구간의 끝 누적합 - (시작 인덱스 -1 )누적합하여 해당 구간의 합을 구하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util...

알고리즘 2023.11.20

백준 1197번 최소 스패닝 트리 (JAVA)

https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 저는 프림을 통해 문제를 해결하였습니다. 가중치들을 보면서 현재 영역의 가장 가까운 노드를 연결하면서 모든 노드를 연결시켜 MST를 풀었습니다. package BOJ.simulation; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; im..

알고리즘 2023.11.19

백준 1531번 투명 (JAVA)

https://www.acmicpc.net/problem/1531 1531번: 투명 첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 먼저 입력으로 들어온 좌표사이의 값을 모두 하나씩 올리고 마지막에 전체적으로 m보다 큰 값이 몇개 있는지를 찾아 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; p..

알고리즘 2023.11.18

백준 14499번 주사위 굴리기 (JAVA)

https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 저는 주사위를 4x3배열로 표현하였고, 주사위가 움직일때 마다, 그 방향으로 배열을 움직여 문제를 해결하였습니다. package BOJ.simulation; import java.io.BufferedReader; import java.io.InputStreamReader; import jav..

알고리즘 2023.11.17

백준 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 저는 큐를 통해 문제를 해결하였습니다. 큐를 통해 다리에 있는 트럭들을 표현하였고, 큐를 통해 순서대로 꺼내면서 해당 트럭이 끝나는 시간을 추적해가면서 문제를 해결하였습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; impor..

알고리즘 2023.11.16

백준 1202번 보석 도둑 (JAVA)

https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 저는 우선순위 큐를 통해 문제를 해결하였습니다. 먼저 보석과 가방을 무게가 낮은 순서대로 정렬하고, 가방의 무게보다 보석들의 가치를 우선순위 큐에 넣어서 해당 가방보다 낮은 무게 중 가장 큰 가치를 갖고 있는 것을 빼네어 문제를 해결하였습니다. package BOJ.greedy; import java.io.BufferedReader; i..

알고리즘 2023.11.15

백준 1753번 최단경로 (JAVA)

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 저는 다익스트라를 통해 문제를 해결하였습니다. 다익스트라를 통해 시작점에서 각각의 지점까지 최단경로를 찾아 문제를 해결하였습니다. package BOJ.mst; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Linke..

알고리즘 2023.11.14

백준 1655번 가운데를 말해요 (JAVA)

https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 저는 우선순위 큐를 통해 문제를 해결하였습니다. 우선순위 큐 두개를 만들어서 하나는 가장 큰 값이 하나는 가장 작은 값이 나오게 하였습니다. 가장 큰 값이 나오는 것은 작은 값들을 가장 작은 값이 나오게 하는 것은 큰 값을 넣었습니다. 입력이 들어오면 작은 값들을 넣는 것의 가장 큰 값을 확인하고 그 값보다 크다면, 큰 값에 아니라면 작은 값에 넣고, 둘의 사이즈를 비교하여 작은 ..

알고리즘 2023.11.13

백준 11399번 ATM (JAVA)

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 저는 정렬을 통해 문제를 해결하였습니다. 먼저 시간이 짧은 것을 앞에 배치시켜 뒤에 있는 사람의 대기시간을 줄였고, 이들의 대기시간을 합하여 문제를 풀었습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public cl..

알고리즘 2023.11.12