問題
問題文
ラーメン店「高橋屋」のラーメンの値段は $1$ 杯 $700$ 円ですが、トッピング(味玉、チャーシュー、ねぎ)を乗せた場合は $1$ 種類につき $100$ 円が加算されます。
ある客がラーメンを一杯注文し、店員にトッピングの希望を伝えました。店員は注文の内容をメモ帳に文字列 $S$ として記録しました。$S$ の長さは $3$ 文字で、$S$ の $1$ 文字目が o のとき客のラーメンに味玉を乗せることを、x のとき味玉を乗せないことを表します。同様に、$S$ の $2$ 文字目、$3$ 文字目はそれぞれチャーシュー、ねぎの有無を表します。
$S$ が入力されると、対応するラーメンの値段を出力するプログラムを書いてください。
制約
・$S$ は長さ $3$ の文字列である。
・$S$ の各文字は o または x である。
収録されている問題セット
回答
回答1 (AC)
注文 $S$ を文字列 s として受け取り、合計金額を表す price に対し、s の各文字にあわせてトッピングの金額を加算するという方針でコーディングしました。
abc095a-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int price = 700;
for ( int i=0; i<3; i++ ) {
if ( s.at(i)=='o' ) {
price += 100;
}
}
cout << price << endl;
}
回答2 (AC)
A 問題は for 文を使わずに解けるとのことなので、
for 文を使わないコードも作成してみました。
abc095a-2.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
if ( s=="ooo" ) {
cout << 1000 << endl;
} else if ( s=="xoo" || s=="oxo" || s=="oox" ) {
cout << 900 << endl;
} else if ( s=="oxx" || s=="xox" || s=="xxo" ) {
cout << 800 << endl;
} else {
cout << 700 << endl;
}
}
調べたこと
AtCoder の解説 → コンテスト全体の解説
回答1に近い方法が紹介されていました。
リンク
前後の記事
- 前の記事 → AtCoderログ:0010 - ABC 081 A
- 次の記事 → AtCoderログ:0012 - ABC 085 A