[알고리즘] 백준 10989번 : 수 정렬하기 3 (Kotlin) www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 이 문제는 시간초과에 대해 신경써야 하는 문제이므로 비교적 성능이 무거운 Scanner의 사용을 배제한다 1. 아슬아슬하게 채점된 BufferedReader + BufferedWriter + Arrays.sort() fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val bw = BufferedWriter(OutputStreamWriter(System.o..
[알고리즘] 백준 2798번 : 블랙잭 (Kotlin) www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있 www.acmicpc.net 1. Scanner fun main() = with(Scanner(System.`in`)) { val N: Int = nextInt() val M: Int = nextInt() val arr = IntArray(N) var result = 0 for (i in 0 until N) { arr[i] = nextInt() } for (i in 0 until N - 2) { for (..
[알고리즘] 백준 10870번 : 피보나치 수 5 (Kotlin) www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 1. 재귀 fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val input = br.readLine().toInt() print(fibonacci(input)) } fun fibonacci(N: Int): Int { return if (N < 2) N else fibonacci(N - 1) + f..
[알고리즘] 백준 1929번 : 소수 구하기 (Koltin) www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 1. Scanner + sqrt fun main() = with(Scanner(System.`in`)) { val N = nextInt() val M = nextLine().trim().toInt() val check = BooleanArray(M + 1) for (i in check.indices) check[i] = true val sqrt = sqrt(M.toDouble()).toInt() for (i in 2..sqrt) { if (c..
[알고리즘] 백준 2839번 : 설탕 배달 (Kotlin) www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 알고리즘은 정말 생각하면 할수록 더 나은 풀이가 나오는것 같습니다..! 1. 제가 처음 풀었을때의 코드입니다 fun main() = with(System.`in`.bufferedReader()) { var input = readLine().toInt() var count = 0 while (true) { if (input % 5 == 0) { print("${input / 5 + count}") break } else i..
[알고리즘] 백준 1152번 : 단어의 개수 (Kotlin) www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 1. 만들다보니 코드가 간단했습니다 fun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))) { print("${StringTokenizer(readLine(), " ").countTokens()}") } 2. 한줄처리도 가능합니다 fun main() { print("${StringTokenizer(BufferedReader(I..
[알고리즘] 백준 2562번 : 최댓값 (Kotlin) www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 1-1. Scanner 를 이용한 방식 fun main(args: Array) = with(Scanner(System.`in`)) { val maxArray = arrayListOf() var maxLine = 0 var maxNum = 0 for (i in 0 until 9) { val inputNum = nextInt() maxArray.add(inputNum) if (max..
[알고리즘] 백준 10952번 : A+B-5 (Kotlin) www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. Scanner 를 이용한 방식 import java.util.* fun main(args: Array) = with(Scanner(System.`in`)) { while (true) { val A = nextInt() val B = nextInt() if (A == 0 && B == 0) { break } println("${A + B}") } } 2. BufferedReader 를 이용한 방식 import java.io.BufferedReader import java.io.InputStreamReader impo..
[알고리즘] 백준 10871번 : X보다 작은 수 (Kotlin) 알고리즘의 공부가 필요하겠다 싶어서 공부를 시작하게 됐는데 문제를 이해하는게 어렵네요ㅋㅋ 문제를 이해하면 로직은간단한거같은데 문제를 이해하는게 관건일듯 싶습니다 www.acmicpc.net/problem/10871 10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 1. Scanner와 IntArray를 이용한 방식 import java.util.* fun main(args: Array) = with(Scanner(System.`in`)) { val n = nextInt() val x = nextI..