Uknow's Lab.
article thumbnail
[백준 17281번] [Kotlin] ⚾
코딩테스트/Kotlin 2023. 3. 7. 16:03

https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 난이도 : 골드 4 태그 : 구현, 브루트포스 설명 어려웠습니다. 정말 어려웠습니다. 소스코드 구현은 그렇게까지 어렵진 않았습니다. 그냥 백트래킹을 사용한 순열 구하기 + 게임 시뮬레이션 구현 이였기에. 다만... 문제를 이해하는데만 30분~1시간 정도가 걸린 것 같습니다 먼저, 타자의 순서를 정하고, (4번째 타자는 1번 선수로 고정) 모든 조합에 대해 게임 시뮬레이션을 진행하면 됩니다. 각 이닝은 ..

article thumbnail
[백준 18352번] [Kotlin] 특정 거리의 도시 찾기
코딩테스트/Kotlin 2023. 2. 27. 16:40

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 난이도 : 실버 2 태그 : 그래프 이론, 그래프 탐색, 너비 우선 탐색, 데이크스트라 설명 한 도시에서 거리가 k인 도시를 찾는 문제입니다. 너비 우선 탐색을 사용하거나, 한 점에서 다른 모든 점까지의 최단거리를 구하는 다익스트라를 사용해도 될 것 같네요. 저는 너비 우선 탐색을 통해 풀이하였습니다. 소스코드 import ..

article thumbnail
[백준 24309번] [Kotlin] РАВЕНСТВО
코딩테스트/Kotlin 2023. 2. 22. 23:38

https://www.acmicpc.net/problem/24309 24309번: РАВЕНСТВО Учителката по математика дала на учениците да намерят неизвестното x от равенството: a·x = b-c. Числата а, b и c са естествени числа и са такива, ч www.acmicpc.net 난이도 : 브론즈 5 태그 : 수학, 사칙연산, 임의 정밀도 / 큰 수 연산 설명 a * x = b - c 이고, a, b, c 가 주어졌을 때 x를 구하는 문제입니다. 단순히 x = (b-c) / a로 구할 수 있겠네요. 소스코드 fun main() { val a = BigDecimal(readln()) val b ..

article thumbnail
[백준 2042번] [Kotlin] 구간 합 구하기
코딩테스트/Kotlin 2023. 2. 21. 23:56

https://www.acmicpc.net/problem/2042 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 난이도 : 골드 1 태그 : 세그먼트 트리, 자료구 설명 세그먼트 트리를 활용한 구간 합 구하기 문제입니다. 세그먼트 트리란, 최상위 노드(루트)에는 모든 값들의 합, 그리고 범위를 이분할하여 해당 범위의 값을 저장하고, 그 자식 노드 역시 범위가 1이 될 때까지 반복적으로 분할합니다. 즉, 미리 구간합을 구해놓고 사용하는 방법으로써, 트..

article thumbnail
[백준 2592번] [Kotlin] 대표값
코딩테스트/Kotlin 2023. 2. 19. 14:56

https://www.acmicpc.net/problem/2592 2592번: 대표값 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30, 20, 60, 30, 40, 50의 평균은 www.acmicpc.net 난이도 : 브론즈 2 태그 : 수학, 구현 설명 10개의 정수가 주어졌을 때, 평균과 최빈값(가장 많이 나온 값)을 출력하는 문제입니다. 사실 큰 고민없이 풀 수 있는 문제지만, 코틀린의 내장 기능을 사용해서 최빈값을 간단하게 구할 수는 없나? 하는 마음에 좀 찾아봤는데, Grouping이라는, 처음보는 클래스를 발견했습니다. 이름처럼, 리스트를 특정 기준에 따라..

article thumbnail
[백준 10039번] [Kotlin] 평균 점수
코딩테스트/Kotlin 2023. 2. 17. 23:56

https://www.acmicpc.net/problem/10039 10039번: 평균 점수 입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다. 점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점 www.acmicpc.net 난이도 : 브론즈 4 태그 : 수학, 사칙연산 설명 5명의 점수를 입력받고, 평균을 출력하는 문제입니다. 단, 최소 점수가 40점이기 때문에 0보다 작은 값들은 40으로 만들어줘야 합니다. 소스코드 fun main(args: Array) { var arr = Array(5) { _ -> 0 } arr[0] = readLine()!!.toInt() arr[1] = readLine()!!..

article thumbnail
[백준 4470번] [Kotlin] 줄번호
코딩테스트/Kotlin 2023. 2. 17. 23:27

https://www.acmicpc.net/problem/4470 4470번: 줄번호 텍스트에서 줄을 입력받은 뒤, 줄 번호를 출력하는 프로그램을 작성하시오. www.acmicpc.net 난이도 : 브론즈 4 태그 : 구현, 문자열 설명 문자열의 앞에 몇 번째 문자열인지 붙여 출력하는 문제입니다. 소스코드 fun main() { val n = readLine()!!.toInt() repeat(n) { println("${it+1}. ${readLine()}") } }

article thumbnail
[백준 2110번] [Kotlin] 공유기 설치
코딩테스트/Kotlin 2023. 2. 17. 23:00

https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 난이도 : 골드 4 태그 : 이분 탐색, 매개 변수 탐색 설명 꽤 오랜 시간을 고민했습니다... 도대체 어떻게 풀어야 하지? 결국 알고리즘 분류를 눌러보고 '이분 탐색'과 '매개 변수 탐색' 두 키워드를 발견했습니다 아, 랜선 자르기와 나무 자르기와 같이 매개 변수, 즉 center를 공유기의 최대 거리로 잡은 이분 탐색이였습니다. 다만 조금 더..

article thumbnail
[백준 11382번] [Kotlin] 꼬마 정민
코딩테스트/Kotlin 2023. 2. 16. 22:09

https://www.acmicpc.net/problem/11382 난이도 : 브론즈 5 태그 : 수학, 구현, 사칙연산 설명 세 수를 입력받아 더해 출력하는 문제입니다. 소스코드 fun main() { val input = readLine()!!.split(" ") println(input[0].toLong() + input[1].toLong() + input[2].toLong()) } 한 줄을 입력받아 split(" ")을 사용해 공백으로 나눈 뒤, int형은 오버플로우가 발생하기 때문에 각각을 toLong으로 변환해 더해줍니다.

article thumbnail
[백준 2003번] [Kotlin] 수들의 합 2
코딩테스트/Kotlin 2023. 2. 16. 22:06

https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 난이도 : 실버 4 태그 : 브루트포스, 두 포인터 설명 특정 구간이 주어지는 m과 같은 케이스를 구하는 문제입니다. 두 포인터를 사용해 풀 수 있을 것 같네요. 소스코드 import java.util.* fun main() = with(System.`in`.bufferedReader()) { val (n, m) = readLine().split(" ")...