정렬

    [BOJ/JAVA] 23559번: 밥

    23559번: 밥https://www.acmicpc.net/problem/23559키워드제주대 학생회관 식당에는 두 개의 메뉴가 있다.코너 A로 가면 5,000원짜리 메뉴를 먹을 수 있고, 코너 B로 가면 1,000원짜리 메뉴를 먹을 수 있다.NNN일동안 매일 학식의 두 메뉴 중 정확히 하나를 골라서 먹어야 한다.준원이는 이미 모든 날의 각 메뉴가 얼마나 맛있을지 수치를 매겨 두었다.준원이는 NNN일간 학식에 총 XXX원 이하를 써야 한다.고른 메뉴의 맛의 합을 최대화 해주자!구현일단 무조건 더 맛있는 메뉴를 고른다.이후 금액에 맞게끔 1,000원 짜리 메뉴로 바꾸었을 때 차이가 가장 적은 메뉴부터 교체해 나간다. boolean is5000[][i] 번째 고른 메뉴가 5000원 짜리 메뉴인가?더 맛..

    [BOJ/JAVA] 27313번: 효율적인 애니메이션 감상

    27313번: 효율적인 애니메이션 감상 https://www.acmicpc.net/problem/27313 키워드 애니메이션을 최대 M M M시간 동안만 보기로 했다. 한별이는 애니메이션을 동시에 최대 K K K개씩 묶어서 보기로 했는데, 한별이가 동시에 애니메이션을 보는 방법은 다음과 같다. 애니메이션을 보고 있지 않은 상태에서, 한별이는 아직 보지 않은 애니메이션 중 K K K개 이하의 애니메이션을 동시에 보기 시작한다. 애니메이션을 보고 있는 도중에는 새로운 애니메이션을 보기 시작할 수 없다. 이로 인해, 한별이는 보기 시작한 애니메이션 중에서 가장 긴 애니메이션이 끝날 때까지 다른 애니메이션을 보기 시작할 수 없다. 한별이는 애니메이션 시청의 달인이기 때문에 애니메이션이 끝남과 동시에 새로운 애니..

    [BOJ/JAVA] 1744번: 수 묶기

    1744번: 수 묶기https://www.acmicpc.net/problem/1744키워드길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다.수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다.수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다.구현양수의 경우 큰 것 끼리 곱하면 더욱 커지므로 무조건 묶어준다.음수의 경우 작은 것 끼리 곱하면 더욱 커지므로 무조건 묶어준다.1의 경우 곱하면 더 작아지므로 더해준다.음수의 갯수가 홀수개 이고, 0이 존재한다면 가장 큰 음수와 0을 묶어준다.코드import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade..

    [BOJ/JAVA] 1701번: Cubeditor

    1701번: Cubeditorhttps://www.acmicpc.net/problem/1701키워드어떤 문자열 내에서 부분 문자열이 두 번 이상 나오는 문자열을 찾는 기능이러한 부분 문자열 중에서 가장 길이가 긴 것을 구하는 프로그램구현kmp 알고리즘을 이용하여 구현한다.문자열 알고리즘용어 정리 |S| 문자열 S의 길이 S = “abcde” 라면 |S| = 5 S[i] (0 ≤ i < |S|) 문자열 S의 i번 글자 S = “abcde” 라면 S[3] = d S[i…j] 문자열 S[i] 부터 S[j] 까지 부분 문자열 S = “abcde” 라면 S[1…3] = bcd S[…a] 문자열 S[0] 부터 S[a] 까지 부분 문자열 S = “abcde” 라면 S[…3] = abcd S[b…] 문자열 S[b] 부..

    [BOJ/JAVA] 1599번: 민식어

    1599번: 민식어https://www.acmicpc.net/problem/1599키워드민식어는 a b k d e g h i l m n ng o p r s t u w y의 순서ng는 n과 o사이에 오는 하나의 알파벳민식어의 순서대로 정렬하는 프로그램구현다음 3가지를 구현하면 된다.민식어의 우선순위를 처리하는 방법ng를 판단하는 방법문자열을 특정 조건으로 정렬하는 방법 1. 민식어의 우선순위 처리하는 방법final static Map minsikMap민식어는 a b k d e g h i l m n ng o p r s t u w y의 순서대로 우선순위를 가진다.따라서 해당 문자가 몇 번째 우선순위인지 map에 저장해두도록 하자ng는 문자열이므로 -라는 문자로 치환하여 저장하자.2. ng를 판단하는 방법민식어..

    [BOJ/JAVA] 20551번: 마스터 배지훈의 후계자

    20551번: Sort 마스터 배지훈의 후계자https://www.acmicpc.net/problem/20551키워드먼저 제자들에게 N개의 원소를 가진 배열A를 주고, A의 원소들이 오름차순으로 정렬된 배열 B를 만들게 한다.그 다음 M개의 질문을 한다.제자들은 주어진 정수 D가 B에서 가장 먼저 등장한 위치를 출력단, D가 B에 존재하지 않는 경우에는 -1를 출력구현정렬 후 탐색이 이루어지므로, 입력값을 정렬할 필요가 있다.중요한 것은 가장 먼저 등장한 위치를 출력이므로 이분탐색으로 찾더라도 가장 앞에 있는 원소를 찾아야 한다. 템플릿low, high 모두 범위 안에 들어오도록 한다.반복문의 속행 조건은 low≤high (항상 high가 low 이상이여야 한다.)해당 숫자를 찾은 경우가장 앞에 있는 원..

    [BOJ/JAVA] 1822번: 차집합

    키워드집합 A에는 속하면서 집합 B에는 속하지 않는 모든 원소를 구하는 프로그램구현집합 연산 중 차집합 연산을 이용하여 구현한다.A.removeAll(B)A집합에는 속하지만, B집합에는 속하지 않게 A를 바꾼다.코드import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; public class java_1822 { static Set aSet, bSet; public static void main(String[] args) throws IOExcepti..

    [BOJ/JAVA] 5052번: 전화번호 목록

    https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; public class java_5052 { ..

    23561번: Young한 에너지는 부족하다

    https://www.acmicpc.net/problem/23561 23561번: Young한 에너지는 부족하다 연령이 22, 23, 26살인 세 명을 묶어서 하나, 21, 24, 25살인 세 명을 묶어서 하나의 크루를 만들면 된다. 각 크루의 에너지(연령의 중간값)는 23과 24가 되며, 문제에서 구하는 값은 24 - 23 = 1이 된다. www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Arrays; import..