목록Algorithm (16)
시배's Android
1206번: 사람의 수 첫째 줄에 N이 주어진다. 둘째 줄부터 N개의 줄에 각 문항의 평균 점수가 주어진다. N은 50보다 작거나 같은 자연수이고, 평균 점수는 0보다 크거나 같고, 10보다 작거나 같은 소수이다. 항상 소수 www.acmicpc.net import java.util.* private val visited = Array(1001) { false } private val edges = Array(1001) { mutableListOf() } private fun dfs(v: Int) { if (visited[v]) return visited[v] = true print("$v ") edges[v].forEach { dfs(it) } } private fun bfs(v: Int) { val ..
7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net import java.util.* private fun main() { val r = System.`in`.bufferedReader() val queue: Queue = LinkedList() val (n, m) = r.readLine().split(' ').map { it.toInt() } val arr = Array(m) { IntArray(n) } for (y in 0 until m) with(StringTokenizer(r.readLin..
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net import java.util.* private fun main() { val a = readLine()!!.toInt() val b = readLine()!!.toInt() val map = Array(a + 1) { IntArray(a + 1) { 0 } } val visited = BooleanArray(a + 1) var ans = 0 repeat(b) { val (c, d) = readLine()!!.split(" ").map { it.toInt() } ma..
12101번: 1, 2, 3 더하기 2 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. www.acmicpc.net private fun main() { val (N, K) = readLine()!!.split(" ").map { it.toInt() } val res = ArrayList() fun go(now: Int, str: String) { if (now == N) { res.add(str) return } if (now > N) { return } for (i in 1..3) { go(now + i, "$str+$i") } } for (i in 1..3) { go(i, "$i") } println(if..
5549번: 행성 탐사 상근이는 우주선을 타고 인간이 거주할 수 있는 행성을 찾고 있다. 마침내, 전 세계 최초로 인간이 거주할 수 있는 행성을 찾았다. 이 행성은 정글, 바다, 얼음이 뒤얽힌 행성이다. 상근이는 이 www.acmicpc.net private fun main() { val sb = StringBuilder() val (n, m) = readLine()!!.split(" ").map{it.toInt()} val k = readLine()!!.toInt() val board = (1 .. n).map { readLine()!!.toList() } val prefixed = MutableList(n + 1) { MutableList(m + 1) { MutableList(3) { 0 } } } ..
3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i a to b.size }.toMap() println(f.map{ (y, c) -> c.toLong() * f..
6443번: 애너그램 첫째 줄에 단어의 개수 N 이, 둘째 줄부터 N개의 영단어가 들어온다. 영단어는 소문자로 이루어져 있다. 단어의 길이는 20보다 작거나 같고, 애너그램의 수가 100,000개 이하인 단어만 입력으로 주 www.acmicpc.net private fun main() { fun dfs(alphabet: IntArray, length: Int, str: String) { if (str.length == length) { println(str) return } for (i in alphabet.indices) { if (alphabet[i] > 0) { alphabet[i]-- dfs(alphabet, length, str + (i + 'a'.code).toChar()) alphabet[i..
2553번: 마지막 팩토리얼 수 첫째 줄에 N이 주어진다. N은 20,000보다 작거나 같은 자연수 이다. www.acmicpc.net private fun main() { val n = readln().toInt() var result = 1L for (i in 1..n) { result *= i result %= 10000000 while (result % 10 == 0L) { result /= 10 } } println(result % 10) }