[백준] 2075번: N번째 큰 수 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 풀이 Comparator를 활용하여 우선순위 큐를 내림차순으로 정의하고, 입력받은 숫자를 우선순위 큐에 저장한다. 그 후, N번째 큰 수를 출력해준다. 코드 import java.util.* fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = br.readLine().toInt() val pq = PriorityQueue(Comparator ..
[백준] 2573번: 빙산 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 BFS나 DFS를 활용해 풀이하면 된다. 탐색에는 방문을 확인하는 visited 배열과 얼마나 녹을지를 저장하는 melted 배열을 이용한다. 탐색은 빙산을 기준으로 하며 방문 지점이 0보다 클 때 visited 배열에 방문 표시를 하고 이어서 탐색해준다. 0 이하인 경우에는 현재 위치의 melted 배열에 1을 증가해준다. 탐색하는 횟수를 세어 2 이상인 경우에는 빙산이 분리된 것이므로 반복문을 종료하고 시간을 출력해준다. 0인 경우에는 빙산이..
[백준] 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...
[백준] 1138번: 한 줄로 서기 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 풀이 for문과 배열을 활용해 풀이하였다. 먼저 사람을 자리에 배치하기위한 빈 배열을 선언한다. 배열에는 1번부터 순서대로 배치하는데 0의 개수를 세어 위치를 정해주면 된다. 순서대로 배치하기 때문에 0의 개수는 자신보다 큰 사람이 위치할 수 있는 자리의 숫자이다. 이 숫자가 입력 받은 숫자와 같다면 현재 번호를 배치할 수 있는 것이다. 만약 자리에 이미 누군가 있다면 그 뒤에 배치해준다. 코드 fun main() { val br = System.`..
[백준] 10826번: 피보나치 수 4 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 문제에서 주어진 범위가 크기 때문에 BigInteger 자료형을 활용해야 한다. BigInteger 배열을 이용해 DP로 피보나치 계산을 해주면 된다. 코드 import java.math.BigInteger fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = br.readLine().toInt..