たなしょのメモ

日々勉強していることをつらつらと

B - Tap Dance

はじめに

たなしょです。

ちょっとだけ苦しみました(汗)

問題文

https://atcoder.jp/contests/abc141/tasks/abc141_b

考え方

サイズを求めるには文字列.length()を使うのですね。 C言語でいうとstrlenですね。

size = str.length();

i+1をしてるのは0文字目のところを1文字目にすることで2で割った際のあまりを求めやすくしています。

奇数文字目と偶数文字目の際に条件式に合致した文字が出現した場合cnt+1しています。

for (int i = 0; i < size; i++) {
    if (((i+1) % 2) == 0) {
        if (str[i] == 'L' || str[i] == 'D' || str[i] == 'U') {
            cnt++;
        } 
    } else {
        if (str[i] == 'R' || str[i] == 'D' || str[i] == 'U') {
            cnt++;
        }
    }
}

いざ実装

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <cmath>

typedef long long ll;

using namespace std;

int main() {
    int cnt = 0;
    int size;
    string str;
    cin >> str;

    size = str.length();

    for (int i = 0; i < size; i++) {
        if (((i+1) % 2) == 0) {
            if (str[i] == 'L' || str[i] == 'D' || str[i] == 'U') {
                cnt++;
            } 
        } else {
            if (str[i] == 'R' || str[i] == 'D' || str[i] == 'U') {
                cnt++;
            }
        }
    }

    if (cnt == size) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }

    return 0;
}

最後に

危なげなく解けました。

最後まで読んでいただいてありがとうございました。 もしよろしければtwitterアカウント(@piklus100yen)もフォローしていただけると幸いです!