-
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 #64 from AlgorithmWithMe/heejik/13week
[장희직] 기적의 매매법, 수 이어 쓰기 1, 등수 구하기, DNA
- Loading branch information
Showing
8 changed files
with
247 additions
and
5 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
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
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,38 @@ | ||
package heejik.`13week` | ||
|
||
import java.lang.Integer.max | ||
|
||
|
||
class DNA { | ||
|
||
fun solve() { | ||
|
||
var answerDna = "" | ||
var answerCnt = 0 | ||
|
||
val (n, m) = readln().split(' ').map { it.toInt() } | ||
|
||
val dnaList = mutableListOf<String>() | ||
|
||
repeat(n) { dnaList.add(readln()) } | ||
|
||
repeat(m) { | ||
var dnaByIdx = "" | ||
dnaList.forEach { dna -> dnaByIdx += dna[it] } | ||
|
||
var maxCnt = 0 | ||
"ACGT".forEach { c -> maxCnt = max(maxCnt, dnaByIdx.count { c == it }) } | ||
|
||
answerDna += dnaByIdx.filter { c -> maxCnt == dnaByIdx.count { c == it } }.min() | ||
answerCnt += dnaByIdx.count { it != answerDna.last() } | ||
} | ||
|
||
println(answerDna) | ||
println(answerCnt) | ||
} | ||
} | ||
|
||
fun main() { | ||
|
||
DNA().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,26 @@ | ||
package heejik.`13week` | ||
|
||
class `등수 구하기` { | ||
|
||
fun solve() { | ||
val (n, score, p) = readln().split(' ').map { it.toInt() } | ||
|
||
if (n == 0) { | ||
println(1) | ||
return | ||
} | ||
val scores = readln().split(' ').map { it.toInt() }.toMutableList() | ||
|
||
scores.sort() | ||
|
||
if (scores.count { it >= score } >= p) { | ||
println(-1) | ||
} else { | ||
println(scores.count { it > score } + 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,29 @@ | ||
package heejik.`13week` | ||
|
||
class `수 이어 쓰기 1` { | ||
|
||
fun solve() { | ||
val n = readln().toInt() | ||
var answer = 0 | ||
|
||
repeat(n) { | ||
answer += getDigit(it+1) | ||
} | ||
|
||
println(answer) | ||
} | ||
|
||
private fun getDigit(_num : Int): Int { | ||
var num = _num | ||
var cnt = 0 | ||
while (num != 0) { | ||
num /= 10 | ||
cnt ++ | ||
} | ||
return cnt | ||
} | ||
} | ||
|
||
fun main() { | ||
`수 이어 쓰기 1`().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,45 @@ | ||
package heejik.`13week` | ||
|
||
class 시계 { | ||
|
||
val nums = listOf( | ||
"####.##.##.####", // 0 | ||
"..#..#..#..#..#", // 1 | ||
"###..#####..###", // 2 | ||
"###..####..####", // 3 | ||
"#.##.####..#..#", // 4 | ||
"####..###..####", // 5 | ||
"####..####.####", // 6 | ||
"###..#..#..#..#", // 7 | ||
"####.#####.####", // 8 | ||
"####.####..####" // 9 | ||
) | ||
|
||
fun solve() { | ||
val watch = mutableListOf<List<String>>() | ||
repeat(5) { | ||
watch.add(readln().split(' ')) | ||
} | ||
|
||
val hourFirst = find(watch.joinToString(separator = "") { it[0] }) | ||
val hourSecond = find(watch.joinToString(separator = "") { it[1] }) | ||
val minuteFirst = find(watch.joinToString(separator = "") { it[2] }) | ||
val minuteSecond = find(watch.joinToString(separator = "") { it[3] }) | ||
|
||
println("$hourFirst$hourSecond:$minuteFirst$minuteSecond") | ||
} | ||
|
||
fun find(diode: String): Int { | ||
nums.forEach { num -> | ||
num.forEachIndexed { index, c -> | ||
if (c == '.' && diode[index] == '#') return@forEach | ||
} | ||
return nums.indexOf(num) | ||
} | ||
return -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,34 @@ | ||
package heejik.`13week` | ||
|
||
class 크로스워드 { | ||
|
||
fun solve() { | ||
|
||
val (r, c) = readln().split(' ').map { it.toInt() } | ||
|
||
val crossWord = mutableListOf<String>() | ||
val words = mutableListOf<String>() | ||
|
||
|
||
repeat(r) { | ||
val row = readln() | ||
crossWord.add(row) | ||
row.split('#').forEach { | ||
if (it.length > 1) words.add(it) | ||
} | ||
} | ||
|
||
repeat(c) { n -> | ||
crossWord.joinToString(separator = "") { it[n].toString() }.split('#').forEach { | ||
if (it.length > 1) words.add(it) | ||
} | ||
} | ||
|
||
println(words.minOrNull()) | ||
} | ||
} | ||
|
||
|
||
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,71 @@ | ||
package heejik.`13week` | ||
|
||
class `🐜 기적의 매매법 🐜` { | ||
|
||
fun solve() { | ||
val money = readln().toInt() | ||
val stocks = readln().split(' ').map { it.toInt() } | ||
|
||
val bnf = bnf(money, stocks) | ||
val timing = timing(money, stocks) | ||
|
||
println( | ||
if (bnf > timing) "BNP" | ||
else if (timing > bnf) "TIMING" | ||
else "SAMESAME" | ||
) | ||
} | ||
|
||
private fun bnf(_money: Int, stocks: List<Int>): Int { | ||
var money = _money | ||
var stock = 0 | ||
|
||
stocks.forEach { | ||
val cnt = money / it | ||
money -= it * (cnt) | ||
stock += cnt | ||
} | ||
|
||
return money + (stock * stocks.last()) | ||
} | ||
|
||
private fun timing(_money: Int, stocks: List<Int>): Int { | ||
var money = _money | ||
var stock = 0 | ||
|
||
var upCnt = 0 | ||
var downCnt = 0 | ||
var preStock = stocks.first() | ||
|
||
stocks.drop(0).forEach { | ||
if (it > preStock) { | ||
upCnt++ | ||
downCnt = 0 | ||
} else if (it < preStock) { | ||
downCnt++ | ||
upCnt = 0 | ||
} else { | ||
upCnt = 0 | ||
downCnt = 0 | ||
} | ||
|
||
if (upCnt >= 3) { | ||
money += stock * it | ||
stock = 0 | ||
} | ||
if (downCnt >= 3) { | ||
val cnt = money / it | ||
money -= it * (cnt) | ||
stock += cnt | ||
} | ||
|
||
preStock = it | ||
} | ||
|
||
return money + (stock * stocks.last()) | ||
} | ||
} | ||
|
||
fun main() { | ||
`🐜 기적의 매매법 🐜`().solve() | ||
} |