알고리즘
-
[백준] 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)..
-
[백준] 15829번: Hashing - 코틀린(kotlin)알고리즘/백준 2022. 11. 5. 00:01
https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 문제 해석 a~z를 1~26으로 생각하면 됩니다. 이후에 각자 순서대로 31^index를 곱하여 모두 더해줍니다. 예제 1 abcde의 해시 값은 (1 × 31^0) + (2 × 31^1) + (3 × 31^2) + (4 × 31^3) +( 5 × 31^4) = 1 + 62 + 2883 + 119164 + 4617605 = 4739715이다. 예제 2 zzz의 해시 값은 (26 × 31^0) +..
-
[백준] 1085번 : 직사각형에서 탈출 - 코틀린(kotlin)알고리즘/백준 2022. 11. 4. 00:01
https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 문제 해석 x,y,w,h를 입력받고 x,y좌표에서 가장 가까운 테두리로 접근할 수 있는 거리를 구해야 합니다. 직사각형은 (0,0) 에서 (w,h) 으로 이루어져 있습니다. 코드 import kotlin.math.min fun main() { val input = readLine()!! .split(" ") .map { it.toInt() } val (x,y,w,h) = inp..
-
[백준] 1157번 : 단어 공부 - 코틀린(kotlin)알고리즘/백준 2022. 11. 3. 00:01
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 해석 가장 많이 사용된 단어를 대문자로 출력하면 됩니다. 단, 가장 많이 사용된 단어가 여러개면 ?를 출력합니다. 코드 fun main() { val input = readLine()!!.toString() val toLowerCase = input.lowercase() val alphabetCounts = Array(26) { 0 } toLowerCase.forEach { alphabetCounts[it - 'a']++ }..
-
[백준] 1546번 : 평균 - 코틀린(kotlin)알고리즘/백준 2022. 11. 2. 00:01
https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제 해석 평균을 구하는 방식을 조금 특이하게 가져갑니다. 1. 가장 큰 수를 구한다. 2. 가장 큰 수로 모든 수를 나누고 100을 곱한다. 3. 모든 수를 더해서 평균을 구한다. 이 과정에서 정합성을 위해 double을 사용하였습니다. 코드 fun main() { val repeatTime = readLine()!!.toInt() var number = 0.0 val numbers = r..
-
[백준] 2577번 : 숫자의 개수 - 코틀린(Kotlin)알고리즘/백준 2022. 11. 1. 00:01
https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 해석 곱셈의 결과로 어떤 숫자가 몇 번 나왔는지 구하는 문제입니다. 코드 fun main() { val counts = Array(10){0} val a = readLine()!!.toInt() val b = readLine()!!.toInt() val c = readLine()!!.toInt() val multipleResult = (a * b * c).toString() for(index in multipleResult.indices){ va..
-
[백준] 2753번: 윤년 - 코틀린(Kotlin)알고리즘/백준 2022. 10. 31. 00:01
https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 문제 해석 문제에 나온 절차대로 윤년을 판별하면 되는 문제입니다. - 4의 배수이면서 100의 배수가 아니여야 함 - 400의 배수이면 됨 막상 구현할 때는 400의 배수는 4의 배수이면서 100의 배수이기 때문에 400의 배수를 먼저 판별해야 했던 문제였습니다. 코드 fun main() { val input = readLine()!!.toInt() println(isLeapYear(in..
-
[백준] 2884번 : 알람 시계 - 코틀린(kotlin)알고리즘/백준 2022. 10. 30. 00:01
https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 해석 H, M을 공백으로 구분하여 입력받고 이 시간에서 45분을 뺀 시간을 출력해야 합니다. 문제 풀이 전 설계 시간에 대한 음수관리를 잘해주기만 하면 될 것 같습니다. 코드 fun main() { val input = readLine()!! val splitInput = input.split(" ") val hour = splitInput[0].toInt() val minutes = splitInp..