結果
| 問題 |
No.48 ロボットの操縦
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-04-08 23:49:52 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 1,052 ms / 5,000 ms |
| コード長 | 2,651 bytes |
| コンパイル時間 | 3,330 ms |
| コンパイル使用メモリ | 74,868 KB |
| 実行使用メモリ | 41,660 KB |
| 最終ジャッジ日時 | 2024-06-26 20:29:35 |
| 合計ジャッジ時間 | 8,098 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 |
ソースコード
import java.util.Scanner;
// これ問題文が説明不足じゃね
// 問題文
// 太郎君はロボットを遠隔で操縦している。
// このロボットは現在(0,0)の座標に立っていて北の方向を向いている。
// 太郎君はいまこのロボットを(X,Y)の座標に移動させたいと思っている。
// ロボットに出来る命令は、1回につき以下のうちいずれかの命令を選んで指示することができる。
// ・時計回りに、90∘ その場で向き(進行方向)を変える。
// ・反時計回りに、90∘ その場で向き(進行方向)を変える。
// ・向いている方向に K距離だけ前進する。Kは、(1≤K≤L) の範囲で、命令のたびに指定することができる。
// ***
// 入力
// X
// Y
// L
// 1行目に、移動先の東西軸座標を表す整数 X (−109≤X≤109) が与えられる。正の方向を東とする。
// 2行目に、移動先の南北軸座標を表す整数 Y (−109≤Y≤109) が与えられる。正の方向を北とする。
// 3行目に、ロボットが1命令につき前進することができる最大の距離を表す整数 L (1≤L≤109) が与えられる。
// ***
// 出力
// ロボットが移動先に到達するまでに必要な最小の命令回数を出力してください。
// 最後に改行してください。
public class No48 {
public static void main(String[] args) {
// 標準入力から読み込む際に、Scannerオブジェクトを使う。
Scanner sc = new Scanner(System.in);
int X = sc.nextInt();
int Y = sc.nextInt();
int L = sc.nextInt();
int count = 0;
int temp = 0;
// Yの移動
temp = Math.abs(Y);
while(temp > L) {
temp -= L;
count++;
// System.out.println("Y");
}
if(temp > 0) {
count++;
// System.out.println("YY");
}
// Xの移動
temp = Math.abs(X);
while(temp > L) {
temp -= L;
count++;
// System.out.println("X");
}
if(temp > 0) {
count++;
// System.out.println("XX");
}
// 座標の位置による方向転換の回数
if(X == 0 && Y > 0) {
// Nothing
}else if(X != 0 && Y >= 0) {
count += 1;
// System.out.println("ZZZ");
}else if(Y < 0) {
count += 2;
// System.out.println("Z");
}else {
// Nothing
}
System.out.println(count);
}
}