Official

A - Job Interview Editorial by m_99


プログラミングの学習を始めたばかりで何から手をつけるべきかわからない方は、まずは「practice contest」(https://atcoder.jp/contests/practice/) の問題A「Welcome to AtCoder」をお試しください。言語ごとに解答例が掲載されています。
また、プログラミングコンテストの問題に慣れていない方は、「AtCoder Beginners Selection」(https://atcoder.jp/contests/abs) の問題をいくつか試すことをおすすめします。
「競プロ典型 90 問」(https://atcoder.jp/contests/typical90) では、プログラミングコンテストで扱われる典型的な 90 問の問題に挑戦可能です。
「C++入門 AtCoder Programming Guide for beginners (APG4b)」(https://atcoder.jp/contests/APG4b) は、競技プログラマー向けのC++入門用コンテンツです。


\(2\) つの条件を満たすかどうかを表す変数をそれぞれ \(f1,f2\) などとし、これらがともに \(true\) ならば Yes と、そうでなければ No と出力することにします(このようにすることで、\(2\) つある条件を独立に扱うことが出来ます)。

\(1\) つ目の条件「『良』と評価した面接官が少なくとも \(1\) 人いる」は、\(f1\)\(false\) の状態から始め、\(S\) の各文字に対し「その文字が o ならば \(f1\)\(true\) にする」という処理をすることで判定出来ます。これは、C++では以下のようになります。

bool f1 = false;
for(int i=0;i<N;i++){
	if(S[i]=='o')f1 = true;
}

\(2\) つ目の条件「『不可』と評価した面接官がいない」は、\(f2\)\(true\) の状態から始め、\(S\) の各文字に対し「その文字が x ならば \(f2\)\(false\) にする」という処理をすることで判定出来ます。これは、C++では以下のようになります。

bool f2 = true;
for(int i=0;i<N;i++){
	if(S[i]=='x')f2 = false;
}

以上を組み合わせ、冒頭で述べたように \(f1,f2\) をもとに出力を行えば正解が得られます。

実装例 (C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
    
	int N;
	cin>>N;
	
	string S;
	cin>>S;
	
	bool f1 = false;
	for(int i=0;i<N;i++){
		if(S[i]=='o')f1 = true;
	}
	
	bool f2 = true;
	for(int i=0;i<N;i++){
		if(S[i]=='x')f2 = false;
	}
	
	if(f1&&f2)cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
	
	return 0;
}

posted:
last update: