はまやんはまやんはまやん

hamayanhamayan's blog

Elevator [第二回 アルゴリズム実技検定 A]

https://atcoder.jp/contests/past202004-open/tasks/past202004_a

解説

https://atcoder.jp/contests/past202004-open/submissions/12893803

やり方はいろいろありそうだが、自分はフロアを下から順に0,1,2,3,...,17と番号を付けて、
それに変換して、フロアの差をとると答え。

f(s) := フロア名がsのときの番号を返す
フロア名を順番に配列に入れて置き、フロア番号が添え字となるようにしておく。
これで順番に精査していって、当てはまるものがあれば、それをフロア番号として返す。

string S, T;
//---------------------------------------------------------------------------------------------------
vector<string> floors;
int f(string s) {
    rep(i, 0, 18) if (floors[i] == s) return i;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> S >> T;

    rrep(i, 9, 1) floors.push_back("B" + to_string(i));
    rep(i, 1, 10) floors.push_back(to_string(i) + "F");

    int s = f(S);
    int t = f(T);

    int ans = abs(s - t);
    cout << ans << endl;
}