🔗 문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 💡 힌트 우선순위 큐 이론 참조 Java 우선순위 큐(Priority Queue) 와 Comparable, Comparator – Jihun's Development Blog (cjh5414.github.io) 💻 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.io.BufferedReader; import java...
문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Arrays; import java.util.Scanner; import java.util.Stack; public class p17298 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = ..
문제 https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.io.*; import java.util.Deque; import java.util.LinkedList; import java.util.StringTokenizer; public class p11003 { public static void main(String[]..
2개의 포인터로 범위를 지정한 다음 범위를 유지한 채로 이동하며 문제를 해결하는 것이다. 투 포인터 알고리즘과 매유 유사하다. 📝 문제 https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 💻 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRead..
문제 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Arrays; import java.util.Scanner; public class p1253 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] A = new int[N];..
문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Arrays; import java.util.Scanner; public class p1940 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.ne..
📝 문제 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 💻 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Scanner; public class p2018 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int startIndex..
📝 문제 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 💡 힌트 S[i] % M의 값과 S[j] % M의 값이 같다면 (S[i]-S[j] ) % M은 0이다. 변경된 합 배열에서 S[i] , S[j]의 값이 같으면 원본 배열에서 i+1부터 j까지의 구간 합이 M으로 나누어떨어지는 구간이다. 💻 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.ut..
🔗 문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 📝 풀이 기준위치 값으로 삽입할 위치 찾기 삽입할 위치 ~ 기준위치의 범위의 값들 오른쪽으로 한칸 씩 자리 이동 삽입할 위치에 기준 값 넣기 총 합 구하기 💻 코드 package org.kyhslam.bakjun.month_11; import java.util.Scanner; public class p11399 { public static void main(String[] args) { //5 //3 1 4 3 2 S..
🔗 문제 https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 📝 풀이 💻 코드 package org.kyhslam.bakjun.month_10; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class p1377 { public static void ..
🔗 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 📝 풀이 - 스택에 첫 index 값을 넣고 peek로 배열의 값을 비교해가면서 큰 수를 넣고, 배열으 전체 순회 후, 정답배열에 남아있는 index에 -1 넣어준다. 💻 코드 package org.kyhslam.bakjun; import java.io.*; import java.util.Scanner; import java.util.Stack; public class p17298 { public ..
🔗 문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 📝 풀이 처음에 배열을 정렬하고 투포인터 방식으로 풀면 쉽다 💻 코드 package org.kyhslam.bakjun; import java.util.Arrays; import java.util.Scanner; public class p1940 { public static void main(String[] args) { Scanner sc = new Scanner..