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..
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 백준 4673번 셀프 넘버 문제 링크입니다. 핵심 1부터 10000까지의 정수 중에서 셀프 넘버를 찾는 것입니다. boolean타입의 배열을 사용하는 것입니다. 정답 코드 public class Main { public static void main(String[] args) { boolean[] check = new boolean[10001]; ..
https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 백준 1316번 그룹 단어 체커 문제 링크입니다. 핵심 그룹 단어의 개수를 찾는 것입니다. 하지만 규칙이 있는데, 연속된 문자는 허용하지만, 같은 문자가 떨어져서 나오면 그룹 단어가 아니게 됩니다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { S..