From 3d4e2599f475c8f0ba6ddcd1b6a655b45c226e82 Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 24 Oct 2022 02:14:54 +0900 Subject: [PATCH 1/5] =?UTF-8?q?solve:=20=EA=B7=BC=EC=86=90=EC=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\352\267\274\354\206\220\354\213\244.kt" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 "src/4week/byeonghee/\352\267\274\354\206\220\354\213\244.kt" diff --git "a/src/4week/byeonghee/\352\267\274\354\206\220\354\213\244.kt" "b/src/4week/byeonghee/\352\267\274\354\206\220\354\213\244.kt" new file mode 100644 index 0000000..3d14645 --- /dev/null +++ "b/src/4week/byeonghee/\352\267\274\354\206\220\354\213\244.kt" @@ -0,0 +1,48 @@ +package `4week`.byeonghee + +import java.io.* + +class `소병희_근손실` { + val br = BufferedReader(InputStreamReader(System.`in`)) + + var n = 0 + var k = 0 + var workouts = IntArray(0) + + val visited = BooleanArray(8) { false } + var curPerm = 0 + var answer = 0 + + fun solution() { + br.readLine().split(" ").map { it.toInt() }.run { + n = first() + k = last() + } + workouts = br.readLine().split(" ").map { it.toInt() - k }.toIntArray() + + makePerm(0) + println(answer) + } + + fun makePerm(len: Int) { + if (len == n) { + answer++ + return + } + + for(i in 0 until n) { + if (visited[i]) continue + if (curPerm + workouts[i] < 0) continue + + visited[i] = true + curPerm += workouts[i] + makePerm(len + 1) + curPerm -= workouts[i] + visited[i] = false + } + } +} + +fun main() { + `소병희_근손실`().solution() +} \ No newline at end of file From a82011c60ed914923737edb6699efe43d88ce31a Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 24 Oct 2022 02:23:36 +0900 Subject: [PATCH 2/5] =?UTF-8?q?solve:=20=ED=9A=8C=EC=9D=98=EC=8B=A4=20?= =?UTF-8?q?=EB=B0=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\354\213\244 \353\260\260\354\240\225.kt" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 "src/4week/byeonghee/\355\232\214\354\235\230\354\213\244 \353\260\260\354\240\225.kt" diff --git "a/src/4week/byeonghee/\355\232\214\354\235\230\354\213\244 \353\260\260\354\240\225.kt" "b/src/4week/byeonghee/\355\232\214\354\235\230\354\213\244 \353\260\260\354\240\225.kt" new file mode 100644 index 0000000..a9ff47d --- /dev/null +++ "b/src/4week/byeonghee/\355\232\214\354\235\230\354\213\244 \353\260\260\354\240\225.kt" @@ -0,0 +1,39 @@ +package `4week`.byeonghee + +import java.io.* +import java.util.PriorityQueue + +class `소병희_회의실 배정` { + + data class Meeting(val s: Int, val e: Int) + + val br = BufferedReader(InputStreamReader(System.`in`)) + val meetings = PriorityQueue(Comparator { a, b -> if (a.e == b.e) a.s - b.s else a.e - b.e }) + + fun solution() { + val n = br.readLine().toInt() + repeat(n) { + br.readLine().split(" ").map{ it.toInt() }.run{ + meetings.add(Meeting(first(), last())) + } + } + + var answer = 0 + var curLastT = 0 + lateinit var nxt : Meeting + + while(meetings.isNotEmpty()) { + nxt = meetings.poll() + if (curLastT <= nxt.s) { + curLastT = nxt.e + answer++ + } + } + + println(answer) + } +} + +fun main() { + `소병희_회의실 배정`().solution() +} \ No newline at end of file From 2ac9309fe246e07003a81a41bd7bd7d69f44c40e Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 24 Oct 2022 02:23:59 +0900 Subject: [PATCH 3/5] =?UTF-8?q?solve:=20=ED=8A=B8=EB=A6=AC=EC=9D=98=20?= =?UTF-8?q?=EB=B6=80=EB=AA=A8=20=EC=B0=BE=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\353\252\250 \354\260\276\352\270\260.kt" | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 "src/4week/byeonghee/\355\212\270\353\246\254\354\235\230 \353\266\200\353\252\250 \354\260\276\352\270\260.kt" diff --git "a/src/4week/byeonghee/\355\212\270\353\246\254\354\235\230 \353\266\200\353\252\250 \354\260\276\352\270\260.kt" "b/src/4week/byeonghee/\355\212\270\353\246\254\354\235\230 \353\266\200\353\252\250 \354\260\276\352\270\260.kt" new file mode 100644 index 0000000..5c2eeb0 --- /dev/null +++ "b/src/4week/byeonghee/\355\212\270\353\246\254\354\235\230 \353\266\200\353\252\250 \354\260\276\352\270\260.kt" @@ -0,0 +1,42 @@ +package `4week`.byeonghee + +import java.io.* + +class `트리의 부모 찾기` { + val br = BufferedReader(InputStreamReader(System.`in`)) + + lateinit var parents : IntArray + val edges = mutableMapOf>() + val q = ArrayDeque>() + + fun solution() { + val n = br.readLine().toInt() + parents = IntArray(n + 1) + + repeat(n-1) { i -> + br.readLine().split(" ").map{ it.toInt() }.run { + edges.getOrPut(first()) { mutableListOf() } + edges[first()]!!.add(last()) + edges.getOrPut(last()) { mutableListOf() } + edges[last()]!!.add(first()) + if (first() == 1) q.add(Pair(first(), last())) + else if (last() == 1) q.add(Pair(last(), first())) + } + } + + lateinit var cur: Pair + while(q.isNotEmpty()) { + cur = q.removeFirst() + parents[cur.second] = cur.first + for(i in edges[cur.second]!!) { + if (parents[i] == 0) q.add(Pair(cur.second, i)) + } + } + + println(parents.drop(2).joinToString("\n")) + } +} + +fun main() { + `트리의 부모 찾기`().solution() +} \ No newline at end of file From 23fd45b854e9b9b98bae3659fcc46634d005c5bf Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 24 Oct 2022 20:12:41 +0900 Subject: [PATCH 4/5] =?UTF-8?q?try:=20=EC=A7=80=EB=A6=84=EA=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\247\200\353\246\204\352\270\270.kt" | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 "src/4week/byeonghee/\354\247\200\353\246\204\352\270\270.kt" diff --git "a/src/4week/byeonghee/\354\247\200\353\246\204\352\270\270.kt" "b/src/4week/byeonghee/\354\247\200\353\246\204\352\270\270.kt" new file mode 100644 index 0000000..9acb997 --- /dev/null +++ "b/src/4week/byeonghee/\354\247\200\353\246\204\352\270\270.kt" @@ -0,0 +1,56 @@ +package `4week`.byeonghee + +import java.io.* + +val br = BufferedReader(InputStreamReader(System.`in`)) + +var answer = Int.MAX_VALUE +var dist = 0 +var D = 0 +var N = 0 + +data class Edge(val s: Int, val e: Int, val d: Int) +val edgeMap = mutableMapOf>() + +fun main() { + br.readLine().split(" ").map{ it.toInt() }.let { + N = it[0] + D = it[1] + } + + repeat(N) { + val (s, e, d) = br.readLine().split(" ").map{ it.toInt() } + if ((e <= D) && (d < (e - s))) { + if (edgeMap.contains(s)) { + edgeMap[s]!!.add(Edge(s, e, d)) + } + else { + edgeMap[s] = mutableListOf(Edge(s, e, d)) + } + } + } + + dfs(0) + println(answer) +} + +fun dfs(node: Int) { + println(node) + + var nxt = node + var mv = 0 + while(edgeMap.containsKey(nxt).not() && nxt < D) { + nxt++ + mv++ + } + if (nxt == D) { + answer = Integer.min(answer, dist + mv) + return + } + println(nxt) + for(i in edgeMap[nxt]!!) { + dist += i.d + mv + dfs(i.e) + dist -= i.d - mv + } +} \ No newline at end of file From 532b5abaeb7745e8613124317827cea0cde53750 Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 24 Oct 2022 22:28:20 +0900 Subject: [PATCH 5/5] =?UTF-8?q?solve:=20=EC=A3=BC=EC=B0=A8=20=EC=9A=94?= =?UTF-8?q?=EA=B8=88=20=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\352\270\210 \352\263\204\354\202\260.kt" | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 "src/4week/byeonghee/\354\243\274\354\260\250 \354\232\224\352\270\210 \352\263\204\354\202\260.kt" diff --git "a/src/4week/byeonghee/\354\243\274\354\260\250 \354\232\224\352\270\210 \352\263\204\354\202\260.kt" "b/src/4week/byeonghee/\354\243\274\354\260\250 \354\232\224\352\270\210 \352\263\204\354\202\260.kt" new file mode 100644 index 0000000..d37111a --- /dev/null +++ "b/src/4week/byeonghee/\354\243\274\354\260\250 \354\232\224\352\270\210 \352\263\204\354\202\260.kt" @@ -0,0 +1,49 @@ +package `4week`.byeonghee + +class `소병희_주차 요금 계산` { + + companion object { + + const val BASE_TIME = 0 + const val BASE_FEE = 1 + const val UNIT_TIME = 2 + const val UNIT_FEE = 3 + + fun String.toMinutes() = this.split(":").map{ it.toInt() }.let{ it.first() * 60 + it.last() } + } + + val closingT = "23:59".toMinutes() + val checkMap = hashMapOf() + val timeMap = hashMapOf() + lateinit var answer: IntArray + + fun solution(fees: IntArray, records: Array): IntArray { + for((t, c, s) in records.map{ it.split(" ")}.sortedBy{ it.first() }) { + when (s) { + "IN" -> checkMap.put(c, t.toMinutes()) + "OUT" -> { + timeMap.put(c, timeMap.getOrDefault(c, 0) + t.toMinutes() - checkMap[c]!!) + checkMap.put(c, -1) + } + } + } + + answer = IntArray(checkMap.keys.size) + var fee = 0 + var i = 0 + for(c in checkMap.keys.sorted()) { + if (checkMap[c]!! != -1) { + timeMap.put(c, timeMap.getOrDefault(c, 0) + closingT - checkMap[c]!!) + } + + fee = fees[BASE_FEE] + fee += Integer.max(0, timeMap[c]!! - fees[BASE_TIME]).let { + (it / fees[UNIT_TIME]) + (if (it % fees[UNIT_TIME] == 0) 0 else 1) + } * fees[UNIT_FEE] + + answer[i++] = fee + } + + return answer + } +} \ No newline at end of file