結果
| 問題 |
No.48 ロボットの操縦
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-03-24 21:06:32 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
AC
|
| 実行時間 | 287 ms / 5,000 ms |
| コード長 | 1,278 bytes |
| コンパイル時間 | 10,849 ms |
| コンパイル使用メモリ | 429,448 KB |
| 実行使用メモリ | 54,416 KB |
| 最終ジャッジ日時 | 2024-11-20 14:41:26 |
| 合計ジャッジ時間 | 18,840 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 |
コンパイルメッセージ
Main.kt:10:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
^
ソースコード
package yukicoder.no48
import kotlin.math.abs
import kotlin.math.ceil
/**
* エントリポイント
* @param args コマンドライン引数
*/
fun main(args: Array<String>) {
val in1 = readLine()
val in2 = readLine()
val in3 = readLine()
println(moveRobot(in1, in2, in3))
}
/**
* 目的地まで何命令で到達できるかを返します。
* @param eastWest 目的地の東西方向
* @param northSouth 目的地の南北方向
* @param maxDistance ロボットが1命令につき前進することができる最大の距離
*/
fun moveRobot(eastWest: String?, northSouth: String?, maxDistance: String?): String {
if (eastWest == null || northSouth == null || maxDistance == null) {
return ""
}
var num = 0
val ew = eastWest.toDouble()
val ns = northSouth.toDouble()
val md = maxDistance.toInt()
// 北
if (ns > 0) {
num += ceil(abs(ns / md)).toInt()
}
// 東西
if (ew != 0.0) {
num++
num += ceil(abs(ew / md)).toInt()
}
// 北から南へ向く場合、いったん東西へ向く
if (ew == 0.0 && ns < 0) {
num++
}
// 南
if (ns < 0) {
num++
num += ceil(abs(ns / md)).toInt()
}
return num.toString()
}