From 5785981a0c45cdeb3456c4ab99172319b133534d Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 31 Oct 2022 20:58:39 +0900 Subject: [PATCH 1/4] =?UTF-8?q?solve:=20=EC=95=84=EA=B8=B0=20=EC=83=81?= =?UTF-8?q?=EC=96=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\210\230 \352\262\214\354\236\204.kt" | 2 + ...4\352\270\260 \354\203\201\354\226\264.kt" | 98 +++++++++++++++++++ ...74\353\223\234\355\212\270\353\246\254.kt" | 67 +++++++++++++ 3 files changed, 167 insertions(+) create mode 100644 "src/5week/byeonghee/\354\210\230 \352\262\214\354\236\204.kt" create mode 100644 "src/5week/byeonghee/\354\225\204\352\270\260 \354\203\201\354\226\264.kt" create mode 100644 "src/5week/byeonghee/\354\277\274\353\223\234\355\212\270\353\246\254.kt" diff --git "a/src/5week/byeonghee/\354\210\230 \352\262\214\354\236\204.kt" "b/src/5week/byeonghee/\354\210\230 \352\262\214\354\236\204.kt" new file mode 100644 index 0000000..25a7011 --- /dev/null +++ "b/src/5week/byeonghee/\354\210\230 \352\262\214\354\236\204.kt" @@ -0,0 +1,2 @@ +package `5week`.byeonghee + diff --git "a/src/5week/byeonghee/\354\225\204\352\270\260 \354\203\201\354\226\264.kt" "b/src/5week/byeonghee/\354\225\204\352\270\260 \354\203\201\354\226\264.kt" new file mode 100644 index 0000000..37b09e1 --- /dev/null +++ "b/src/5week/byeonghee/\354\225\204\352\270\260 \354\203\201\354\226\264.kt" @@ -0,0 +1,98 @@ +package `5week`.byeonghee + +import java.io.* +import java.util.PriorityQueue +import kotlin.system.exitProcess + +class `소병희_아기 상어` { + companion object { + data class Pos(val r: Int, val c: Int) { + operator fun plus(pos: Pos) : Pos { + return Pos(r + pos.r, c + pos.c) + } + + fun inSpace(x: Int) : Boolean { + return r in 0 until x && c in 0 until x + } + } + + val mv = listOf( + Pos(-1, 0), + Pos(0, -1), + Pos(0, 1), + Pos(1, 0) + ) + + val br = BufferedReader(InputStreamReader(System.`in`)) + + var n = 0 + + lateinit var space: Array + lateinit var visited: Array + + val pq = PriorityQueue(Comparator> { a, b -> + if (a.second == b.second) { + if (a.first.r == b.first.r) a.first.c - b.first.c + else a.first.r - b.first.r + } + else a.second - b.second + }) + + var shark = Pos(0, 0) + var size = 2 + var eat = 0 + var mom = true + var answer = 0 + + fun solve() { + n = br.readLine().toInt() + space = Array(n) { r -> + br.readLine().split(" ").mapIndexed{ c, it -> + it.toInt().also { if (it == 9) shark = Pos(r, c) } + }.toIntArray() + } + space[shark.r][shark.c] = 0 + + while(true) { + pq.clear() + pq.add(Pair(shark, 0)) + visited = Array(n) { BooleanArray(n) } + mom = true + + while(pq.isNotEmpty()) { + val (pos, dist) = pq.poll() + if (pos.inSpace(n).not()) continue + if (visited[pos.r][pos.c]) continue + visited[pos.r][pos.c] = true + + if (space[pos.r][pos.c] > size) continue + + if (space[pos.r][pos.c] in listOf(0, size) ) { + for (d in mv) { + pq.add(Pair(pos + d, dist + 1)) + } + } + else { + answer += dist + if ((++eat) == size) { + eat = 0 + size++ + } + space[pos.r][pos.c] = 0 + shark = pos.copy() + mom = false + break + } + } + if (mom) { + println(answer) + exitProcess((0)) + } + } + } + } +} + +fun main() { + `소병희_아기 상어`.solve() +} \ No newline at end of file diff --git "a/src/5week/byeonghee/\354\277\274\353\223\234\355\212\270\353\246\254.kt" "b/src/5week/byeonghee/\354\277\274\353\223\234\355\212\270\353\246\254.kt" new file mode 100644 index 0000000..c1119b1 --- /dev/null +++ "b/src/5week/byeonghee/\354\277\274\353\223\234\355\212\270\353\246\254.kt" @@ -0,0 +1,67 @@ +package `5week`.byeonghee + +/** + * 1. array + slice -> list + subList : -20ms + * 2. if (all 1) else if (all 0) else -> when(all 1) : -10ms + * 3. subList * 2 + all -> for(r)for(c)if(1) : -40ms + * 4. list+ for -> array + for : -20ms + */ + +import java.io.* + +class `소병희_쿼드트리` { + companion object { + data class Pos(val r: Int, val c: Int) { + operator fun times(int: Int) : Pos { + return Pos(r * int, c * int) + } + + operator fun plus(pos: Pos) : Pos { + return Pos(r + pos.r, c + pos.c) + } + } + + val br = BufferedReader(InputStreamReader(System.`in`)) + val bw = BufferedWriter(OutputStreamWriter(System.`out`)) + + val quad = listOf( + Pos(0, 0), + Pos(0, 1), + Pos(1, 0), + Pos(1, 1) + ) + + lateinit var screen : Array + + fun solve() { + val n = br.readLine().toInt() + screen = Array(n) { br.readLine().toCharArray() } + + dfsQuadTree(Pos(0, 0), n) + bw.flush() + } + + fun dfsQuadTree(p: Pos, size: Int) { + var ones = 0 + for(r in p.r until p.r + size) for(c in p.c until p.c + size) { + if (screen[r][c] == '1') ones++ + } + + when(ones) { + size * size -> bw.append('1') + 0 -> bw.append('0') + else -> { + bw.append('(') + for(mv in quad) { + dfsQuadTree(p + (mv * (size / 2)), size / 2) + } + bw.append(')') + } + } + } + } +} + +fun main() { + `소병희_쿼드트리`.solve() +} \ No newline at end of file From 61be2810804ab22d8bf2edf59ffd7f458f77a611 Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 31 Oct 2022 21:01:55 +0900 Subject: [PATCH 2/4] =?UTF-8?q?solve:=20=ED=9D=99=EA=B8=B8=20=EB=B3=B4?= =?UTF-8?q?=EC=88=98=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...64\354\210\230\355\225\230\352\270\260.kt" | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 "src/5week/byeonghee/\355\235\231\352\270\270 \353\263\264\354\210\230\355\225\230\352\270\260.kt" diff --git "a/src/5week/byeonghee/\355\235\231\352\270\270 \353\263\264\354\210\230\355\225\230\352\270\260.kt" "b/src/5week/byeonghee/\355\235\231\352\270\270 \353\263\264\354\210\230\355\225\230\352\270\260.kt" new file mode 100644 index 0000000..8794be2 --- /dev/null +++ "b/src/5week/byeonghee/\355\235\231\352\270\270 \353\263\264\354\210\230\355\225\230\352\270\260.kt" @@ -0,0 +1,52 @@ +package `5week`.byeonghee + +/** 입력이 [s, e)로 주어짐에 주의해야 했다 **/ + +import java.io.* +import java.util.PriorityQueue + +class `소병희_흙길 보수하기` { + + data class Water(val s: Int, val e: Int) + + val br = BufferedReader(InputStreamReader(System.`in`)) + val pq = PriorityQueue(Comparator{ a, b -> a.s - b.s }) + var n = 0 + var l = 0 + + lateinit var cur : Water + var mergeCnt = 0 + var prevEnd = 0 + var answer = 0 + + fun solution() { + br.readLine().split(" ").map{ it.toInt() }.let { + n = it[0] + l = it[1] + } + + repeat(n) { + br.readLine().split(" ").map{ it.toInt() }.sorted().let { + pq.add(Water(it[0], it[1] - 1)) + } + } + + while(pq.isNotEmpty()) { + cur = pq.poll() + prevEnd = Integer.max(prevEnd, cur.s) + mergeCnt = getCount(prevEnd, cur.e) + answer += mergeCnt + prevEnd += l * mergeCnt + } + + println(answer) + } + + fun getCount(s: Int, e: Int) : Int { + return (e - s + l ) / l + } +} + +fun main() { + `소병희_흙길 보수하기`().solution() +} \ No newline at end of file From 0a11a56ffb8c0b5a219090e1ce4ab094b04fa745 Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 31 Oct 2022 21:03:09 +0900 Subject: [PATCH 3/4] =?UTF-8?q?solve:=20=EB=AF=B8=EB=A1=9C=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4 \353\247\214\353\223\244\352\270\260.kt" | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 "src/5week/byeonghee/\353\257\270\353\241\234 \353\247\214\353\223\244\352\270\260.kt" diff --git "a/src/5week/byeonghee/\353\257\270\353\241\234 \353\247\214\353\223\244\352\270\260.kt" "b/src/5week/byeonghee/\353\257\270\353\241\234 \353\247\214\353\223\244\352\270\260.kt" new file mode 100644 index 0000000..bc3a590 --- /dev/null +++ "b/src/5week/byeonghee/\353\257\270\353\241\234 \353\247\214\353\223\244\352\270\260.kt" @@ -0,0 +1,72 @@ +package `5week`.byeonghee + +import java.io.* + +class `소병희_미로 만들기` { + + companion object { + const val R = 1 + const val L = -1 + } + + val br = BufferedReader(InputStreamReader(System.`in`)) + val bw = BufferedWriter(OutputStreamWriter(System.`out`)) + + fun Int.turn(dir: Int) : Int { + return (this + 4 + dir) % 4 + } + + fun Char.dir() : Int { + return if (this == 'R') R else L + } + + data class Pos(var r: Int, var c: Int) { + operator fun plus(pos: Pos) : Pos { + return Pos(r + pos.r, c + pos.c) + } + } + + val directions = listOf( + Pos(1, 0), + Pos(0, -1), + Pos(-1, 0), + Pos(0, 1) + ) + + var minPos = Pos(50, 50) + var maxPos = Pos(50, 50) + var curDir = 0 + var curPos = Pos(50, 50) + val maze = Array(101) { CharArray(101){'#'} } + + fun solution() { + val n = br.readLine().toInt() + br.readLine().toCharArray().forEach { + when(it) { + 'F' -> { + curPos += directions[curDir] + with(curPos) { + maze[r][c] = '.' + + maxPos = Pos(Integer.max(maxPos.r, r), Integer.max(maxPos.c, c)) + minPos = Pos(Integer.min(minPos.r, r), Integer.min(minPos.c, c)) + } + } + else -> curDir = curDir.turn(it.dir()) + } + } + maze[50][50] = '.' + + for(r in minPos.r..maxPos.r) { + for(c in minPos.c..maxPos.c) { + bw.append(maze[r][c]) + } + bw.newLine() + } + bw.flush() + } +} + +fun main() { + `소병희_미로 만들기`().solution() +} \ No newline at end of file From 968830e86ae64fc436ef36eea39f085a4af140d8 Mon Sep 17 00:00:00 2001 From: bngsh Date: Mon, 31 Oct 2022 22:18:22 +0900 Subject: [PATCH 4/4] =?UTF-8?q?solve:=20=EC=98=A4=ED=94=88=EC=B1=84?= =?UTF-8?q?=ED=8C=85=EB=B0=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...10\354\261\204\355\214\205\353\260\251.kt" | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 "src/5week/byeonghee/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251.kt" diff --git "a/src/5week/byeonghee/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251.kt" "b/src/5week/byeonghee/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251.kt" new file mode 100644 index 0000000..0cd6c0f --- /dev/null +++ "b/src/5week/byeonghee/\354\230\244\355\224\210\354\261\204\355\214\205\353\260\251.kt" @@ -0,0 +1,27 @@ +package `5week`.byeonghee + +class 소병희_오픈채팅방 { + companion object { + var answer = mutableListOf() + val uidMap = hashMapOf() + + fun solution(record: Array): Array { + val log = record.map{ it.split(" ") } + + log.forEach { + when(it[0]) { + "Enter", "Change" -> uidMap.put(it[1], it[2]) + } + } + + log.forEach { + when(it[0]) { + "Enter" -> answer.add("${uidMap[it[1]]!!}님이 들어왔습니다.") + "Leave" -> answer.add("${uidMap[it[1]]!!}님이 나갔습니다.") + } + } + + return answer.toTypedArray() + } + } +} \ No newline at end of file