🦀
Rust の match 式を使って ARC 012 の A 問題を解く
ARC 012 の A 問題
こちらの問題を解いてみます。
if 式と match 式について
この問題は if 式による条件分岐で解くことも出来ますが、今回は match 式で解いてみることにします。個人的には match 式の方がスッキリしているので好きです。
同一の処理を if 式と match 式でそれぞれ書いたものを以下に示します。
if 式での表現
fn main() {
let num = 0;
let result = if num == 0 {
"Zero"
} else if num == 1 {
"One"
} else if num == 2 {
"Two"
} else if num == 3 {
"Three"
} else {
"Many"
};
println!("{}", result); // Zero
}
match 式での表現
fn main() {
let num = 0;
let result = match num {
0 => "Zero",
1 => "One",
2 => "Two",
3 => "Three",
_ => "Many",
};
println!("{}", result); // Zero
}
実際に解いてみる
match 式での解答はこのようになります。
use proconio::input;
fn main() {
input! {
day: String,
}
let ans = match day.as_str() {
"Sunday" => 0,
"Monday" => 5,
"Tuesday" => 4,
"Wednesday" => 3,
"Thursday" => 2,
"Friday" => 1,
"Saturday" => 0,
_ => 0,
};
println!("{}", ans);
}
補足説明
- 標準入力を受け取るために
use proconio::input;
を用いています。 -
"Sunday"
の型は&str
ですが、変数day
はString
型なのでそのままではエラーになります。型をString
から&str
に変換することで使えるようになるので、as_str()
を使って型を変換しています。
Discussion