알고리즘/백준
-
[백준] 18110번: solved.ac - 코틀린(kotlin)알고리즘/백준 2023. 10. 2. 00:01
https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 문제해석 난이도의 평균을 구하는 문제이지만 의견이 없을 경우 예외처리와, 30% 절사평균에 대한 고려를 수행해야 합니다. 이때 항상 반올림을 수행하므로 반올림도 잘 수행해야 합니다. 예제 입력 1 복사 5 1 5 5 7 8 예제 출력 1 복사 6 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난..
-
[백준] 27866번: 문자와 문자열 - 코틀린(Kotlin)알고리즘/백준 2023. 10. 1. 00:01
https://www.acmicpc.net/problem/27866 27866번: 문자와 문자열 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 $S$가 주어진다. 단어의 길이는 최대 $1\,000$이다. 둘째 줄에 정수 $i$가 주어진다. ($1 \le i \le \left|S\right|$) www.acmicpc.net 문제해석 단어 S가 주어지고 정수 i가 주어졌을 때 i번째 글자를 출력하라 예제 입력 1 복사 Sprout 3 예제 출력 1 복사 r 코드 fun main() { val result = `27866_문자와문자열`() println(result) } fun `27866_문자와문자열`(): Char { val word = readln() val index = readln().toInt(..
-
[백준] 1654번: 랜선 자르기 - 코틀린(kotlin)알고리즘/백준 2022. 11. 13. 00:01
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 해석 기존에 랜선을 K개 가지고 있습니다. 필요한 랜선의 개수 N개가 주어지고 랜선을 잘라서 N개 이상을 만드려고 합니다. 이때 길이를 최대로 만들면서 N개 이상을 만족하는 길이를 구하면 됩니다. 가장 단순한 건 2중 반복문이지만 그렇게 되면 백억의 시간 복잡도 이므로 이분 탐색을 통해 답을 찾아가야 합니다. 나무 자르기 문제와 매우 비슷한 문제 같습니다. 코드 ..
-
[백준] 2805번: 나무 자르기 - 코틀린(kotlin)알고리즘/백준 2022. 11. 12. 00:01
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 해석 나무가 M미터 필요하다. 이때 나무를 자르기 위해 절단기의 높이 H를 설정해야 한다. 나무를 최소한으로 필요한 만큼만 가져가려고 합니다. 코드 fun main() { val (hasTreeCount, needTreeCount) = readLine()!!.split(" ").map { it.toInt() } val treeHeights = IntAr..
-
[백준] 1874번 : 스택 수열 - 코틀린(kotlin)알고리즘/백준 2022. 11. 10. 00:01
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 해석 1~n까지의 수를 스택에 넣을 수 있다. 어떠 수열이 주어졌을 때 push, pop연산으로 스택을 이용하여 해당 수열을 만들 수 있는지 알아내 보자. 예시 수열 : 4 3 6 8 7 5 2 1 1~8까지의 수가 존재함 push : 1 push : 1 2 push : 1 2 3 push : 1 2 3 4 p..
-
[백준] 4949번: 균형잡힌 세상 - 코틀린(kotlin)알고리즘/백준 2022. 11. 9. 00:01
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 풀이 전 설계 stack을 활용하여 (,[,),]를 잘 구분지어 매칭하면 되는 문제 같습니다. 코드 import java.util.* import kotlin.collections.ArrayList fun main() { val list = ArrayList() while (true) { var line = readLine() ?: return if (line == "...
-
[백준] 7568번: 덩치 - 코틀린(kotlin)알고리즘/백준 2022. 11. 8. 00:01
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 문제 해석 N의 범위가 50이며 자신의 덩치 순위를 구하는 문제입니다. 이때 덩치가 더 큰 조건은 키, 몸무게가 모두 커야 합니다. 만약 키는 큰데 몸무게는 작다면 두 사람의 덩치를 비교할 수 없습니다. 따라서 Comparator를 사용한 정렬으로는 풀 수 없다고 판단하였고 2중 포문을 통해 완전 탐색으로 구현하였습니다. 코드 data class Person( val weight: I..
-
[백준] 10773번: 제로 - 코틀린(kotlin)알고리즘/백준 2022. 11. 7. 00:01
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 해석 0이 주어지면 가장 최근에 쓴 수를 지웁니다. 또한 0이 주어지면 항상 지울 수 있는 수가 존재한다는 조건이 존재합니다. 즉, 스택을 활용해서 0이 들어오는 순간에는 POP을 하면 될 것 같습니다. 코드 fun main() { val stack = ArrayDeque() val count = readLine()!!.toInt() repeat(count)..