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
[Java] 자바 Swing을 사용한 GUI 숫자 야구 게임
언어/Java 2023. 2. 18. 01:14

앞서 포스팅했던 2048과 마찬가지로, 자바를 처음 배울 당시, Swing 파트를 배울 즈음 만들었던 프로젝트 입니다. https://uknowblog.tistory.com/2 [Java] 숫자 야구 게임 어렸을 적 많이 해봤던 숫자 야구 게임. ​ 입력한 값의 숫자와 정답의 숫자의 같은 자릿수의 숫자가 같다면 Strike ​ 자릿수는 다르나 같은 숫자가 있다면 Ball 이며, ​ 3 Strike 일 경우 게임을 승 uknowblog.tistory.com 숫자 야구 게임은 이전에 콘솔창 버전에서는 다룬 적이 있는데요. 해당 로직을 기반으로 한 GUI 버전입니다. 총 10번의 기회 안에 숫자를 맞추면 됩니다. 프로그램엔 두 가지 자바 클래스 파일이 있는데, 실행을 담당하는 Main.java와 프로그램 내부..

article thumbnail
[Java] 자바 Swing을 사용한 GUI 2048
언어/Java 2023. 2. 18. 00:56

자바를 처음 배우고, 2학기에 자바의 GUI와 Swing을 배우며, 무언가 프로그램을 만들어보고 싶다는 마음에 만들어봤던 2048 게임입니다. 자바를 처음 배울때라 내부 로직은 꽤나 스파게티 코드이고, 지금보면 왜 이렇게 짰을까 하는 부분도 꽤 많습니다. 알고리즘도 사실 잘 모르던 시절이라 숫자 병합 로직이 꽤 비효율적이고, 제대로 작동이 되는게 신기할 정도입니다 ㅎㅎ; 조작방법은 단순히 상, 하, 좌, 우 방향키를 조작해 같은 숫자들끼리 합칠 수 있습니다. 재시작 / 게임 종료를 할 때마다 랭킹이 저장되며(자바 파일 입출력 기능), 랭킹 초기화 버튼을 통해 랭킹을 초기화할 수 있습니다. 랭킹 기능은 없냐는 친구의 말에, 아 맞다 나 파일입출력 배웠지? 그걸로 될 것 같은데? 하면서 만들었던 기억이 생각..

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를 공유기의 최대 거리로 잡은 이분 탐색이였습니다. 다만 조금 더..