AtCoder Beginner Contest 51 C問題
最短経路はいくつかありうるが、 - 1回目はx, yの座標差分だけ移動 - 2回目は1回目を迂回するように、x, yの座標差+2の距離ずつ移動する ようにすればよい。
迂回の仕方はいろいろあるが、1パターンだけでいいので以下の経路でコーディングする。
use proconio::input; fn main() { input! { sx: i32, sy: i32, tx: i32, ty: i32, }; let dx = (tx - sx) as usize; let dy = (ty - sy) as usize; // 1 print!("{}", "U".repeat(dy)); print!("{}", "R".repeat(dx)); print!("{}", "D".repeat(dy)); print!("{}", "L".repeat(dx)); // 2 print!("L"); print!("{}", "U".repeat(dy + 1)); print!("{}", "R".repeat(dx + 1)); print!("DR"); print!("{}", "D".repeat(dy + 1)); print!("{}", "L".repeat(dx + 1)); println!("U"); }
Submission #30898620 - AtCoder Beginner Contest 051
.repeat
の存在を初めて知ったので覚えておく。- Rustはusize型と数値型の変換が面倒なので良い書き方を覚えたい。