https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 백준 7568번 덩치 문제 링크입니다. 핵심 우선 입력 값은 5 55 185 58 183 88 186 60 175 46 155 이다. 출력은 2 2 1 2 5이다. 이는 키와 몸무게가 다른 사람에 비해 크면 더 덩치가 크고 키나 몸무게 둘 중 1가지만 크면 같은 덩치이고, 둘 다 작으면 덩치가 더 작은 것이다. 이문제는 브루트 포스에 분류된 것처럼 반복해서 비교하는 것이다. 정답 코드..
https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 백준 2981번 검문 문제 링크입니다. 핵심 여러 수를 받고 그 수들을 나누었을 때, 나머지가 같은 값이 나오게 하는 수를 찾는 것이다. 단순한 방법으로는 2부터 1씩 증가시키면서 값을 나누었을 때, 나머지를 비교하는 것이지만, 이러한 방법은 시간 초과가 뜨게 된다. 따라서 우리는 유클리드 호제법을 사용하여 문제를 풀어야 한다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 백준 10816번 숫자 카드 2 문제 링크입니다. 핵심 이 문제는 처음 제시된 숫자 중에서 아래 제시된 숫자가 몇 번 나왔는지를 체크하는 것이다. 핵심은 HashMap을 사용하는 것이다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 백준 10815번 숫자 카드 문제 링크입니다. 핵심 처음 입력된 숫자 중에서 상근이가 가지고 있는 숫자가 있으면 1 아니면 0을 출력하는 것이다. 처음에는 contains를 사용하여, 포함 여부를 확인해보았는데, 이는 시간이 너무 오래 걸려서 시간 초과가 떴다. 이문제는 binarySearch를 사용하는 것이 핵심이다. 정답 코드 import java.io.*; im..
https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 백준 18870번 좌표 압축 문제 링크입니다. 핵심 여러 가지 수를 받고, 작은 값이 0 값을 갖고 그 뒤로 1씩 증가되는 형태이다. 이때 핵심은 HashMap을 사용하는 것이다. 정답 코드 import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.uti..
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 백준 1181번 단어 정렬 문제 링크입니다. 핵심 여러가지 단어를 받고, 길이가 짧은 순으로 정렬하고, 길이가 같으면 사전 순으로 정렬시킨다. 정답 코드 import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nex..
https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 백준 2798번 블랙잭 문제 링크입니다. 핵심 여러 수를 받고, 그중에 3장을 골라 합이 우리가 원하는 값인 M에 근접한 값을 찾는 것이다. 이 문제는 브루트 포스로 분류되어 있는데, 이는 무차별 대입이란 뜻이다. 문제의 분류에 맞게 무차별 대입의 방법을 사용하자. 정답 코드 import java.util.Scanner; public class Main { publ..
https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 백준 2581번 소수 문제 링크입니다. 핵심 두 수를 입력받고 두 수사이의 값 중 소수의 합을 구하고 최솟값을 구하는 문제이다. 정답 코드 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int N =..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 백준 2838번 설탕 배달 문제 링크입니다. 핵심 5와 3의 배수를 조합해서 구하는 문제인데, 5의 배수로 나누어질 경우가 가장 봉지수가 적다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextI..
https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 백준 10757번 큰 수 A+B 문제 링크입니다. 단순한 A+B를 계산하는 문제이지만, 값이 매우 크다는 문제가 있습니다. 핵심 흔히 사용되는 기본형 8개의 값은 위의 범위를 초과하면 안 된다. 하지만 우리가 구하려는 값은 위의 범위를 훨씬 뛰어넘는다. 이때 사용하는 것이 바로 BigInteger 클래스이다. 정답 코드 import java.util.Scanner; import java.math.BigInteger; public class Main { public static void main(String..