文系ギャルが0から始める競技プログラミング#12
Intro
この記事は不定期連載です。
↓最初の一本はこちら↓
文系ギャルが0から始める競技プログラミング#0
↓直前の記事はこちら↓
文系ギャルが0から始める競技プログラミング#11
・Tenka1 Programmer Beginner Contest 2019
やっと念願のコンテストに出れました!
やっと競プロギャルに進化!!!!!!
早速記事にしていきます。
目指せ天下一ギャル〜〜〜〜☆
・A問題
6:34で通過したみたいです。
問題文
数直線上に家 1,2,3があり、それぞれのある座標はA,B,Cです。
家1から家2まで寄り道をせずにまっすぐ向かう途中で家3のある座標を通る場合は Yes を、そうでない場合は No を出力してください。
制約
0≤A,B,C≤100
A,B,Cは相異なる整数である
入力
入力は以下の形式で標準入力から与えられる。
A B C
出力
家1から家2まで寄り道をせずにまっすぐ向かう途中で家3のある座標を通る場合は Yes を、そうでない場合は No を出力せよ。
― A - On the Way
まずパターンを2つに分けます。
その通り分岐させて書けば優勝です!
焦ってパターン2を先に書いて、それ以外って感じにしちゃったけど動けばオールOK〜〜!
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
int A,B,C;
cin >> A >> B >> C;
if(A>C){
if(B<C){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
}else{
if(B>C){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
}
return 0;
}
・B問題
問題文
英小文字からなる長さNの文字列Sと整数Kが与えられます。
SのK番目の文字と異なる文字全てを '*' で置き換えてできる文字列を出力してください。
制約
1≤K≤N≤10
Sは英小文字からなる長さNの文字列である
N,Kは整数である
入力
入力は以下の形式で標準入力から与えられる。
N
S
K
出力
SのK番目の文字と異なる文字全てを '*' で置き換えてできる文字列を出力せよ。
― B - *e**** ********e* *e****e* ****e**
直前に文字列の扱いかたをたまたま練習していて優勝!
11:59で通過したみたいです。
K番目の文字と一緒だったら何もしない、
そうでなければ*に置き換える処理をループさせればいいと思ったんですが、
それでよかったみたいです。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
int N,K;
string S;
cin >> N >> S >> K;
for(int i=0;i<N;i++){
if(S[K-1] == S[i]){
}else{
S[i] = '*';
}
}
cout << S << endl;
return 0;
}
またもや一発AC!!!優勝(天才)!!!!!
いままで解く時間を全く気にせず、ググったり紙に書いたりしながらまったり解いていたんですが焦るとこんな感じか…といい経験になりました。
・C問題
後ろから見て、白に置き換えるパターンと黒に置き換えるパターンを見て少ない方を出力する…と考えたんですがWAで挫折…。
公式の解説等々読んでまた再チャレンジします!
たのしかった!
継続して参加していこうと思っています!!!!!
また次回からは過去問解き放題の解説になります。
Twitterでアドバイス頂いたのでそれも紹介したいと思います〜〜!
もっといい方法・アドバイスなどありましたらTwitterやコメントでお待ちしています!
Outro
#13に続く!(不定期連載です。)
これは成功と挫折を繰り返し、
タピオカ片手に難問を解く、
ギャルプログラマが生まれるまでの物語である…。
この記事が気に入ったらサポートをしてみませんか?