[백준] 11000번: 강의실 배정 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 풀이 LectureTime 데이터 클래스를 정의하여 Comparable 인터페이스를 구현한다. 시작시간을 기준으로 오름차순 정렬하도록 고 만약 시작시간이 같다면 종료시간을 기준으로 정렬한다. 입력받은 시간을 LectureTime 배열에 저장하고 이 배열을 정렬해준다. 우선순위 큐를 선언하고 첫번째 수업의 종료 시간을 큐에 넣는다. 배열을 순회하면서 만약 현재 강의의 시작 시간이 우선순위 큐의 최상단의 강의의 종료 시간보다 작거나 같으면 해당 강의는 해당 강의실에서 진행 가능하므로 우선순위 큐에서 poll(..
[백준] 1431번: 시리얼 번호 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 풀이 시리얼 넘버와 자리수의 합을 포함하는 Guitar 데이터 클래스를 정의하고 Comparable 인터페이스를 구현하여 풀이하였다. 코드 data class Guitar(val serialNumber: String, val digitalSum: Int): Comparable { override fun compareTo(other: Guitar): Int { return if(serialNumber.length != other.serialNumber...
[백준] 1449번: 수리공 항승 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 풀이 그리디 문제로 새로운 테이프를 언제 붙여줘야 하는지를 계산하는 문제이다. 물이 새는 곳의 위치는 입력받아 배열에 저장하고, 이를 오름차순으로 정렬한다. 정렬된 배열을 기반으로 테이프를 붙여 주는데, 이전에 붙였던 테이프가 현재 물이 새는 곳에도 붙일 수 있다면 개수를 세지 않고 넘어간다. 붙여지는 범위는 현재 위치 + 테이프의 길이 - 1로 정하면 된다. 테이프를 붙이는 범위를 현재 위치 + 테이프의 길이 - 1로 정하는 이유는 테이프..
[백준] 1931번: 회의실 배정 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 이 문제의 유형은 활동 선택 문제(Activity Selection problem)라고하며 대표적인 그리디 문제이다. 활동 선택 문제란 각 활동의 시작 시간과 종료 시간이 주어졌을 때, 한 사람은 한 번에 하나의 활동만 수행할 수 있다고 가정하며, 한 사람이 최대로 수행할 수 있는 활동의 수를 찾는 것을 목표로 하는 것이다. 선택할 수 있는 활동이 많아지려면, 서로 겹치지 않는 활동에 대해 종료시간 빠른 경우를 선택해야 한다. 따라서 활동들을 종료시간을 기준으로 정렬하고 선택한다. 가장 먼저 종료하는 활동을 선택하고, 두 번째 활동부터 활동의 시작 시간이 마지막으로 ..
[백준] 10814번: 나이순 정렬 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 Pair 타입의 list를 만들고 입력받은 정보를 저장한다. 그리고 그 리스트에 sortWith 함수를 이용해 나이 순으로 정렬해준다. sortWith 함수는 자신이 원하는 정렬 규칙으로 Comparator를 지정할 수 있는 것이다. 이 문제에서는 다른 객체와 나이를 비교하게 하면 된다. 코드 import java.util.* fun main() { val br = System.`in`.bufferedReader() val bw = System.out.buf..