과거⚰️/코테 (구)
백준 1076 저항 해결 코틀린(kotlin)
아무루
2022. 1. 5. 22:46
https://www.acmicpc.net/problem/1076
1076번: 저항
첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.
www.acmicpc.net
백준이 마크가 참 멋있는 듯 ㅎㅎ
백준 1076 저항
import kotlin.math.*
fun main() = with(System.`in`.bufferedReader()) {
val value = arrayOf("black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white")
val one = readLine()
val two = readLine()
val three = readLine()
var answer = ((value.indexOf(one) * 10) + value.indexOf(two)) * ((10.0).pow(value.indexOf(three)).toLong())
println(answer)
}
자료형을 조심하자
어려운 문제는 아니다
배열에 이름 넣고 인덱스를 받아오고 첫 번째 키는 *10
두 번째는 그냥 +
세 번째는 10^index 해서 곱하면 된다
(첫 번째 인덱스 * 10) + 두 번째 인덱스 * 10^세 번째 인덱스
여기서 문제는 10^세 번째 인덱스 요놈
여기서 long으로 변환을 안 해주면 계속 틀렸다고 뜬다;;
pow함수는 long으로는 자동으로 안 해주나 보다
2번째 풀이
fun main() = with(System.`in`.bufferedReader()) {
val value = mapOf<String,Int>("black" to 0,
"brown" to 1,
"red" to 2,
"orange" to 3,
"yellow" to 4,
"green" to 5,
"blue" to 6,
"violet" to 7,
"grey" to 8,
"white" to 9)
val multiply = mapOf<String,Long>("black" to 1,
"brown" to 10,
"red" to 100,
"orange" to 1000,
"yellow" to 10000,
"green" to 100000,
"blue" to 1000000,
"violet" to 10000000,
"grey" to 100000000,
"white" to 1000000000)
val one = readLine()
val two = readLine()
val three = readLine()
var answer = (value.get(one)!! * 10 + value.get(two)!!) * multiply.get(three)!!
println(answer)
}
속도를 올릴 수 있지 않을까 해서 맵에 통째로 넣고 해 봤는데 노력에 비해 20 정도밖에 안 빨라짐
가성비는 별로 인듯하다