スクリーンショット_2019-04-04_23

文系ギャルが0から始める競技プログラミング#15

Intro


この記事は不定期連載です。
↓最初の一本はこちら↓
文系ギャルが0から始める競技プログラミング#0

↓直前の記事はこちら↓
文系ギャルが0から始める競技プログラミング#14

・髪色

情報系の友達競プロの話になったときに、
ノリで「髪をレーティングの色に染めればw」となりマジでやることしました。
茶色はいいとして、水色に耐えきれるのか自分
まあいいや、がんばろ!!!!!!!!!!!

・ABC069B ― 続 文字列を練習する回


引き続きけんちょんさんの記事から、文字列に関する問題を解いていきます。

問題文
internationalization という英単語は、i18n と略されることがあります。
これは、先頭文字i末尾文字nの間に18文字が挟まっていることに由来します。
長さ3以上の英小文字のみからなる文字列sが与えられます。
同様の規則によってsを略してください。

制約
3≤s≤100
(ただし、sはsの長さを表す。)
sは英小文字のみからなる。

入力
入力は以下の形式で標準入力から与えられる。
s

出力
sを略したものを出力せよ。
B - i18n

国際化って意味らしいです!なげーな!
これは割と瞬殺できたような気がします!

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
   string s;
   cin >> s;
   
   size_t size = s.size();
   
   cout << s[0] << size-2 << s[size-1] << endl;
   
   return 0;
}

size文字数カウントできることをうまく使って、
調節すればいいだけでしたね…また天才出ちゃいましたか…。

優勝!はいつぎ!

・ABC082B


問題文
英小文字のみからなる文字列s,tが与えられます。
あなたは、sの文字を好きな順に並べ替え文字列s′を作ります。
また、tの文字を好きな順に並べ替え文字列t′を作ります。
このとき、辞書順でs′<t′となるようにできるか判定してください。

注釈
長さNの文字列a=a1a2...aNおよび長さMの文字列b=b1b2...bMについて、辞書順でa<bであるとは、次の2つの条件のいずれかが成り立つことをいう;
N<Mかつa1=b1,a2=b2,...,aN=bNである。
あるi(1≤i≤N,M)が存在して、a1=b1,a2=b2,...,ai−1=bi−1かつai<biである。
ただし、文字どうしはアルファベット順で比較される。
例えば、xy<xyaであり、atcoder<atlasである。
制約s,tの長さは1以上100以下である。
s,tは英小文字のみからなる。

制約
s,tの長さは1以上100以下である。
s,tは英小文字のみからなる。
入力入力は以下の形式で標準入力から与えられる。
s
t

出力
辞書順でs′<t′となるようにできるならばYesを、できないならばNoを出力せよ。
B - Two Anagrams

sとtを並べ替えたらいいのかな??
stringでソートすると辞書順に並ぶってどこかで見たような!
と、


   sort(s.begin(),s.end());
   sort(t.begin(),t.end());

と並べ替えて、分岐させて判定するように書いたら普通にWAでした。
なんでだろ、なんでだろ。

…問題文をよーーーく読んだら、tは大きい順に並べ替えないとダメでした。
tのほうが大きくしたいのだから、tは大きい順sは小さい順に並べ替えたほうが条件を満たしやすい?って解釈であってる?
ということで、greater<int>()を入れて、大きい順に並べます。

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
   string s,t;
   cin >> s >> t;
   
   sort(s.begin(),s.end());
   sort(t.begin(),t.end(), greater<int>());
   
   if(s<t){
       cout << "Yes" << endl;
   }else{
       cout << "No" << endl;
       
   }
   
   
   return 0;
}

はい優勝ーーーーーー!
間違いに気づくのも天才の証ーーー!

だいぶ文字列の扱いに慣れてきた気がします。
けんちょんさん、ありがとう!

Outro


#16に続く!(不定期連載です。)

これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。

この記事が気に入ったらサポートをしてみませんか?