https://www.acmicpc.net/problem/16099 16099번: Larger Sport Facility The input consists of several test cases. The first line contains an integer indicating the number of test cases. Each test case follows. Each test case consists of a single line containing 4 integers 1 ≤ lt, wt, le, we ≤ 109 separated by single spaces www.acmicpc.net 난이도 : 브론즈 5 태그 : 수학, 사칙연산 설명 두 개의 스포츠 시설을 비교하고 더 큰 시설을 출력하는 문..
https://www.acmicpc.net/problem/25965 25965번: 미션 도네이션 리그오브전설 스트리머 순범이는 트위치 플랫폼으로 시청자를 끌어모으고 있다. 순범이는 '트윕' 음성 도네이션을 통해 시청자들과 소통하고는 한다. 순범이는 트윕에 '미션' 기능이 있다는 것 www.acmicpc.net 난이도 : 브론즈 4 태그 : 수학, 구현, 사칙 연산 설명 각 테스트 케이스 별로 KDA에 맞는 도네 금액을 산출해 출력하는 문제입니다 주의할 점은 금액이 0보다 작다면 합산하지 않는다는 점입니다. 소스코드 import kotlin.math.max fun main() { repeat(readLine()!!.toInt()) { val n = readLine()!!.toInt() val mission..
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 난이도 : 골드 2 태그 : 자료 구조, 그리디 알고리즘, 정렬, 우선순위 큐 설명 정렬과 우선순위 큐를 사용해 풀 수 있습니다. 보석의 경우, 무게로 내림차순 정렬하고, 무게가 같을 경우 오름차순 정렬을 합니다. 가방도 무게를 기준으로 오름차순 정렬하고, 각 가방의 무게보다 가볍거나, 같은 보석의 가격을 우선순위 큐(내림차순)에 넣고,..
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 난이도 : 골드 4 태그 : 자료 구조, 그리디 알고리즘, 우선순위 큐 설명 비교 횟수가 최소가 되려면 매번 가장 작은 개수의 카드 묶음 두개씩 비교하여 합치면 됩니다. 매번 정렬하여 가장 작은 값 두개를 찾을 필요 없이, 우선순위 큐를 사용하면 쉽게 구할 수 있습니다. 소스코드 import java.util.PriorityQueue fun main() { val br = Syste..
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 난이도 : 골드 2 태그 : 구현, 브루트포스, 백트래킹, 시뮬레이션 설명 2048의 게임을 바탕으로 한 문제입니다. 예전에 꽤 재밌게 했던 게임이고, 자바 스윙을 배울때 GUI로 직접 구현했던 게임이였는데, 이렇게 보니 반갑네요. 2048 게임을 잘 모르시는 분이라면 꼭 아래 링크에서 한 번씩 해보시기 바랍니다. https://play2048.co/ 2048 Join..
https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 난이도 : 실버 3 태그 : 정렬 설명 A와 B의 길이가 다르면, 짧은 것이 먼저 온다. 만약 서로 길이가 같다면, A의 모든 자리수의 합과 B의 모든 자리수의 합을 비교해서 작은 합을 가지는 것이 먼저온다. (숫자인 것만 더한다) 만약 1,2번 둘 조건으로도 비교할 수 없으면, 사전순으로 비교한다. 숫자가 알파벳보다 사전순으로 작다. 다소 복잡한 정렬조건을 갖고 푸는 문제입니다. 하지만, ..
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 난이도 : 실버 4 태그 : 정렬 설명 국어는 내림차순, 영어는 오름차순, 수학은 내림차순, 이름으로 오름차순 하는 문제입니다. 편의상 별도의 data class인 Student를 만들어 풀이하였습니다. 소스코드 import java.util.* private data class Student(var name: String, var kor: Int, var eng: Int, ..
https://www.acmicpc.net/problem/2535 2535번: 아시아 정보올림피아드 첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사 www.acmicpc.net 난이도 : 실버 5 태그 : 구현, 정렬 설명 점수 순으로 정렬하고, 국가당 최대 두개의 메달만 받을 수 있습니다. 소스코드 import java.util.StringTokenizer fun main() { val br = System.`in`.bufferedReader() val n = br.readLine().toInt() val arr = Array(n) { intAr..
https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 난이도 : 골드 3 태그 : 다이나믹 프로그래밍, 깊이 우선 탐색, 그래프 이론, 그래프 탐색 설명 DFS를 사용해 탐색하는 문제입니다. 다만, M, N이 500 이하의 자연수 이므로 DFS만 사용해서는 시간초과 / 메모리 초과가 발생하며, 다이나믹 프로그래밍 기법이 사용되어야 합니다 dp를 -1로 초기화하여 탐색을 하지 않는 공간을 나타냅니다. DFS를 이용해 탐색하며 이차원 배열 dp에 시작점에서 ..
https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 난이도 : 골드5 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색 설명 너비 우선 탐색(BFS, Breadth First Search)을 사용하여 풀이하는 문제입니다. 각 경우의 수를 그래프 형태로 생각하며, 가장 먼저 도달하는 해가 최적의 해인 BFS의 특징을 사용하여 풀이할 수 있습니다. BFS의 '가장 먼저 도달하는 경로가 최적의 경로이다'라는 특징을 잘 모르실 경우, 아래 포스팅을 한번 보고 오시..