치춘짱베리굿나이스
[백준] 22403 본문
阿吽の呼吸
문제
時は進んで 2060 年,共に 70 歳を迎える前田さんと後藤さんは長い付き合いの友人であり,大学時代にACM-ICPCで共に戦った仲間でもある.
二人は今でもよく一緒にお茶を飲みつつ,競技プログラミングの話で盛り上がっている.
二人で一緒にお茶を飲む時,前田さんが 1 回A
と言うと,その発言の後に後藤さんがちょうど 1 回Un
と返事をする習慣がいつのまにか出来た.
しかし最近後藤さんは物忘れや勘違いをすることが多く,前田さんがA
と言っても,後藤さんはたまにUn
の返事を忘れたり,余計に返事をしたりする.
ついこの間も前田さんと後藤さんはお茶を飲みながら,二人のお気に入りのデータ構造について話し込んでいたようだ.
この時の会話の中から,A
で表される前田さんの発言と,Un
で表される後藤さんの返事のみからなる記録が時系列で与えられたとき,後藤さんが習慣通りに反応したとみなすことが出来るかチェックしてほしい.
注意点として,前田さんの発言に対し,後藤さんの返事が多少遅れても,後藤さんは習慣通りに反応したとみなせる場合がある,ということが挙げられる. 例えば,前田さんが2回連続してA
と言った後,後藤さんが 2 回連続してUn
と返事をして会話が終了した場合は,後藤さんが習慣通りの返事をしたとみなされる (Sample Input 2 参照).
また,会話が終了した時点で,前田さんがA
と言った回数と,後藤さんがUn
と返事した回数が一致しても,後藤さんが習慣通りに返事をしたとはみなされない場合もあるので注意すること. 例えば,前田さんが1回A
と言った後,後藤さんが 2 回連続してUn
と返事し,その後で前田さんが 1 回A
と言って会話が終了した場合は,後藤さんが習慣通りの返事をしたとはみなされない (Sample Input 3 参照).
입력
入力は以下の形式で与えられる.
最初の行はひとつの整数からなる. N$N$ は,記録に含まれる前田さんがA
と発言した回数と後藤さんがUn
と返事した回数の合計を表し,1≤N≤100$1 \leq N \leq 100$ を満たす. その後 N$N$ 行に,文字列 Si$S_i$ が続き,各 Si(1≤i≤N)$S_i (1 \leq i \leq N)$ はA
かUn
のどちらかに一致する.ここでA
は前田さんの発言,Un
は後藤さんの返事を表す. i$i$ の小さい順に Si$S_i$ が記録されたものとする. 前田さんと後藤さんが同時に発言することは無かったとする.
출력
後藤さんが習慣通りに反応したとみなすことが出来ればYES
,出来なければNO
を1行で出力すること.
풀이
const aun = () => {
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
input.shift();
let stack = [];
for (let i of input) {
if (i === "A") stack.push("A");
else if (i === "Un") {
if (stack.length === 0) {
console.log("NO");
return;
}
stack.pop();
}
}
if (stack.length > 0) console.log("NO");
else console.log("YES");
};
aun();
반성회
아 훔 아 훔 훔 아 훔
'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글
[백준] 11050 (0) | 2022.02.07 |
---|---|
[백준] 12605 (0) | 2022.02.07 |
[백준] 5581 (0) | 2022.02.07 |
[백준] 2493 (0) | 2022.02.07 |
[백준] 6198 (0) | 2022.02.07 |