AtCoder Beginners Contest 259 C問題
Q&A
Closed
初めに
AtCoderを初めて、約一ヶ月の駆け出しです。とりあえず茶色diffの問題を解けるようになろうと思って頑張っています。
Qiitaに初めて質問・投稿するので、書き方がおかしいところなどがあるとは思いますが、ご容赦ください。
問題
AtCoder Beginners Contest 259 C問題
回答状況
回答の発想的には模範回答と同じ(ランレングス圧縮)で、自分なりのランレングス圧縮っぽいコードを書いてみました。
自分で書いたコード(下に記載)ではテストケース32個のうち、28ケースがACだったのですが、4ケースがREになりました。(結局原因がわからず時間切れ)
質問
以下の点についてお答えいただきたく思います。
- どうして4ケースのみコンパイルエラーになったのか?
- 自分のコードのどこがおかしいのか?
- その他、プログラミングの作法などで不自然なところ(不自然なところ、こういうもの使うと便利などあればお願いします。)
自分で書いたコード
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
int main(){
string s,t;
cin >> s >> t;
vector<int> sn;
vector<int> tn;
vector<int> sc;
vector<int> tc;
char before = ' ';
for(int i=0; i<(int)s.size(); i++){
if(s.at(i) != before){
sc.push_back(s.at(i));
sn.push_back(1);
}
else sn.at(sn.size() - 1) += 1;
before = s.at(i);
}
before = ' ';
for(int i=0; i<(int)t.size(); i++){
if(t.at(i) != before){
tc.push_back(t.at(i));
tn.push_back(1);
}
else tn.at(tn.size() - 1) += 1;
before = t.at(i);
}
int flg = 0;
if(sc.size() != tc.size()) flg = 1;
for(int i=0; i<(int)tn.size(); i++){
if(sc.at(i) != tc.at(i)) flg = 1;
if(sn.at(i) > tn.at(i)) flg = 1;
if(sn.at(i) == 1 && sn.at(i) != tn.at(i)) flg = 1;
}
if(flg == 0) cout << "Yes" << endl;
else cout << "No" << endl;
}
(B問題でmathライブラリを使ったので、C問題では使っていませんがimportしています。)
ご回答よろしくお願いいたします。
0