Uknow's Lab.
article thumbnail
[백준 2309번] [Kotlin] 일곱 난쟁이
코딩테스트/Kotlin 2023. 6. 18. 02:59

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 난이도 : 브론즈 1 태그 : 정렬, 브루트포스 설명 9명의 난쟁이가 주어졌을 때, 합이 100이 되는 7명의 난쟁이를 찾는 문제입니다. 9명의 난쟁이 키의 합을 구한 뒤, 9명 중 2명을 선택해 난쟁이 키 합에서 뺀 뒤, 100이 되는 케이스를 찾으면 될 것 같습니다. 소스코드 fun main() { val height = Array(9) { 0 } repeat(9) { height[it] = readL..

article thumbnail
[백준 18110번] [Kotlin] solved.ac
코딩테스트/Kotlin 2023. 6. 14. 14:51

https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 난이도 : 실버 4 태그 : 수학, 구현, 정렬 설명 Solved.ac 의 문제 난이도 계산 방법을 바탕으로 만든 문제인 것 같네요. 솔브드의 난이도 계산 시스템은 극단적인 값으로 인해 평균이 왜곡되는 것을 막기 위해 절사 평균을 사용하는데요. 단순히 의견 개수 * 0.15 (반올림)개 만큼 양극값을 제거하고 평균을 계산하면 됩니다. 소스코드 fun main() = w..

article thumbnail
[백준 11000번] [Kotlin] 강의실 배정
코딩테스트/Kotlin 2023. 6. 5. 15:51

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 난이도 : 골드 5 태그 : 자료 구조, 그리디 알고리즘, 정렬, 우선순위 큐 설명 한 시간대에 동시에 진행중인 강의가 몇 개인지 체크하는 문제입니다. 가장 처음 든 생각은 아무래도 int 배열을 체크해놓고 하나씩 체크해볼까? 생각했지만, 시작, 끝 시간의 범위 (0 ≤ Si < Ti ≤ 109)를 보고 바로 다른 방법을 고민하였습니다. 아무래도 우선순위 큐를 사용해 그리디적으로 풀 수 있을 것 같네요. 위와 같이 그림으로 그려 나타내면 쉬울 ..

article thumbnail
[백준 13904번] [Kotlin] 과제
코딩테스트/Kotlin 2023. 5. 25. 23:52

https://www.acmicpc.net/problem/13904 13904번: 과제 예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다. www.acmicpc.net 난이도 : 골드 3 태그 : 자료 구조, 그리디 알고리즘, 정렬, 우선순위 큐 설명 과제는 마감일이 있고, 과제 하나를 끝내는 데에는 하루가 걸립니다. 과제를 풀 때마다 각기 다른 점수를 얻을 수 있을 때, 점수의 최댓값을 구하는 문제입니다. 어려운 것 같지만 천천히 접근해봅시다. 최댓값을 구하려면, 어떤 숙제를 해야 할까요? 바로 점수가 높은 숙제부터 하는 것입니다. 그럼 숙제를 언제 해야 할까요? 각 숙제는 마감일 안에 언제든지 하면 됩..

article thumbnail
[백준 24479번] [Kotlin] 알고리즘 수업 - 깊이 우선 탐색 1
코딩테스트/Kotlin 2023. 5. 25. 23:21

https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 난이도 : 실버 2 태그 : 그래프 이론, 그래프 탐색, 정렬, 깊이 우선 탐색 설명 이름 처럼 깊이 우선 탐색 (DFS, Depth First Search)의 연습문제 입니다. 그래프를 탐색하는데는 여러 방법이 있습니다. 그 중 꽤 유명한 탐색방법인 DFS를 연습해봅시다. DFS는 트리 or 그래프에서 최대한 깊이 탐색한 ..

article thumbnail
[Kotlin/코틀린] 여러 조건을 기준으로 정렬하기
언어/Kotlin 2023. 5. 21. 02:14

개발을 하다보면 간혹가다가 배열 혹은 리스트를 정렬할 때, 여러 프로퍼티를 기준으로 정렬을 해야할 때가 있습니다. 아래와 같이 이름, 나이, 키, 몸무게를 프로퍼티로 가지는 Person 클래스가 있습니다. class Person(val name: String, val age: Int, val height: Int, val weight: Int) Person 클래스의 배열도 있고요. val list = arrayOf( Person("홍길동", 20, 170, 60), Person("전우치", 30, 180, 70), Person("사스케", 40, 160, 50), Person("나루토", 50, 175, 65), ) 그렇다면, 위 사람들을 나이 순서로 정렬하려면 어떻게 해야 할까요? list.sortBy..

article thumbnail
[백준 11004번] [Kotlin] K번째 수
코딩테스트/Kotlin 2023. 2. 12. 14:00

https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 난이도 : 실버 5 태그 : 정렬 설명 정렬하고, k번째로 큰 수를 출력하는 문제입니다. 소스코드 import java.util.* fun main() = with(System.`in`.bufferedReader()) { val (n, k) = readLine().split(" ").map { it.toInt() } StringTokenizer(readLine()).let { st -> val arr = Array(n) { st.nextToken()..

article thumbnail
[백준 1302번] [Kotlin] 베스트셀러
코딩테스트/Kotlin 2023. 2. 9. 21:52

https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 난이도 : 실버 3 태그 : 자료 구조, 문자열, 정렬, 해시를 사용한 집합과 맵 설명 이 문제 같은 경우, 문자열 별로 카운트를 해야 하므로, 해시맵을 유용하게 쓸 수 있겠습니다. 소스코드 fun main(): Unit = with(System.`in`.bufferedReader()) { val hashMap = HashMap() repeat(readLine().toInt()) { val..

article thumbnail
[백준 2693번] [Kotlin] N번째 큰 수
코딩테스트/Kotlin 2023. 2. 7. 22:03

https://www.acmicpc.net/problem/2693 2693번: N번째 큰 수 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000 www.acmicpc.net 난이도 : 브론즈 1 태그 : 정렬 설명 각 배열들이 주어졌을때, 배열들의 n번째 큰 수를 출력하는 문제입니다. 크기가 항상 10이고 n은 항상 3인데... 문제 제목이 왜 n번째 큰 수인지 모르겠네요. 보통 n번째 큰수라 하면 입력으로 n을 받을텐데, 조금 독특한 문제인 것 같습니다. 소스코드 import java.util.StringTokenizer fun main()..

article thumbnail
[백준 11656번] [Kotlin] 접미사 배열
코딩테스트/Kotlin 2023. 2. 5. 15:36

https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 난이도 : 실버 4 태그 : 문자열, 정렬 설명 문자열 s의 모든 접미사 배열을 정렬해 출력하는 문제입니다. 단순히, 문자열의 첫번째부터 마지막, 두 번째 부터 마지막, 세 번째 부터 마지막, 네 번째 부터 마지막 . . . 마지막 문자열 까지, ArrayList에 넣어준다음, 정렬하면 되겠네요. 소스코드 fun main() { val origin = readln() val strArray = ArrayList() for (i in origin.indices) { strArr..