-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #188 from wellFoundedDevelopers/byeonghee/47week
[소병희] 알고스팟, A와 B 2, 회장뽑기, 입국심사
- Loading branch information
Showing
4 changed files
with
171 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package byeonghee.week47 | ||
|
||
class 소병희_A와B2 { | ||
|
||
companion object { | ||
fun solve() = with(System.`in`.bufferedReader()) { | ||
val s = readLine() | ||
val t = readLine() | ||
|
||
fun checkAB(sb: StringBuilder): Boolean { | ||
if (s == sb.toString()) return true | ||
if (s.length == sb.length) return false | ||
|
||
if (sb.last() == 'A') { | ||
val nsb = StringBuilder(sb) | ||
nsb.deleteCharAt(nsb.lastIndex) | ||
if (checkAB(nsb)) return true | ||
} | ||
if (sb.first() == 'B') { | ||
val nsb = StringBuilder(sb) | ||
nsb.deleteCharAt(0) | ||
nsb.reverse() | ||
if (checkAB(nsb)) return true | ||
} | ||
|
||
return false | ||
} | ||
|
||
val sb = StringBuilder(t) | ||
println(if (checkAB(sb)) 1 else 0) | ||
} | ||
} | ||
} | ||
|
||
fun main() { | ||
소병희_A와B2.solve() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package byeonghee.week47 | ||
|
||
import java.util.* | ||
|
||
class 소병희_알고스팟 { | ||
|
||
companion object { | ||
const val INF = 99_999 | ||
const val WALL = 1 | ||
const val ROOM = 0 | ||
|
||
val dr = intArrayOf(0, 1, 0, -1) | ||
val dc = intArrayOf(1, 0, -1, 0) | ||
|
||
fun solve() = with(System.`in`.bufferedReader()) { | ||
val (n, m) = readLine().split(" ").map { it.toInt() } | ||
val maze = Array(m) { IntArray(n) } | ||
val dist = Array(m) { IntArray(n) { INF } } | ||
val pq = PriorityQueue<IntArray> { a, b -> a[0] - b[0] } | ||
|
||
repeat(m) { i -> | ||
readLine().forEachIndexed { j, v -> | ||
maze[i][j] = v.digitToInt() | ||
} | ||
} | ||
|
||
pq.add(intArrayOf(0, 0, 0)) | ||
while(pq.isNotEmpty()) { | ||
val (d, r, c) = pq.poll() | ||
if (dist[r][c] <= d) continue | ||
dist[r][c] = d | ||
|
||
for(dir in 0 until 4) { | ||
val nr = r + dr[dir] | ||
val nc = c + dc[dir] | ||
if (nr !in maze.indices || nc !in maze[0].indices) continue | ||
if (maze[nr][nc] == ROOM) { | ||
pq.add(intArrayOf(d, nr, nc)) | ||
} | ||
else if (maze[nr][nc] == WALL) { | ||
pq.add(intArrayOf(d+1, nr, nc)) | ||
} | ||
} | ||
} | ||
|
||
println(dist[m-1][n-1]) | ||
} | ||
} | ||
} | ||
|
||
fun main() { | ||
소병희_알고스팟.solve() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package byeonghee.week47 | ||
|
||
class 소병희_입국심사 { | ||
fun solution(n: Int, times: IntArray): Long { | ||
times.sort() | ||
|
||
var lb = 0L | ||
var ub = times.last() * n.toLong() | ||
var mid = 0L | ||
|
||
while(lb + 1 < ub) { | ||
mid = lb + (ub - lb) / 2 | ||
val cost = times.sumOf { mid / it } | ||
if (cost < n) lb = mid | ||
else ub = mid | ||
} | ||
|
||
return ub | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package byeonghee.week47 | ||
|
||
class 소병희_회장뽑기 { | ||
|
||
companion object { | ||
const val INF = 987_654_321 | ||
|
||
fun solve() = with(System.`in`.bufferedReader()) { | ||
val n = readLine().toInt() | ||
val adj = Array(n) { i -> IntArray(n) { j -> if (i == j) 0 else INF }} | ||
|
||
var a = 0 | ||
var b = 0 | ||
|
||
readLine().split(" "). let { | ||
a = it[0].toInt() | ||
b = it[1].toInt() | ||
} | ||
|
||
while(a != -1) { | ||
adj[a-1][b-1] = 1 | ||
adj[b-1][a-1] = 1 | ||
|
||
readLine().split(" "). let { | ||
a = it[0].toInt() | ||
b = it[1].toInt() | ||
} | ||
} | ||
|
||
for(k in 0 until n) { | ||
for(i in 0 until n) for(j in 0 until n) { | ||
val before = adj[i][j] | ||
val detour = adj[i][k] + adj[k][j] | ||
if (detour < before) adj[i][j] = detour | ||
} | ||
} | ||
|
||
var minScore = 987_654_321 | ||
val candidates = ArrayDeque<Int>() | ||
|
||
for(i in 0 until n) { | ||
val score = adj[i].maxOf{it} | ||
if (score < minScore) { | ||
minScore = score | ||
candidates.clear() | ||
candidates.add(i + 1) | ||
} | ||
else if (score == minScore) { | ||
candidates.add(i + 1) | ||
} | ||
} | ||
|
||
println("$minScore ${candidates.size}") | ||
println(candidates.joinToString(" ")) | ||
} | ||
} | ||
} | ||
|
||
fun main() { | ||
소병희_회장뽑기.solve() | ||
} |