paizaオンラインハッカソン7(#_poh 7)にチャレンジしました!(前編)

By | Date : 2015/12/22 ( Last Update : 2016/02/19 ) | 134 views

カテゴリ : C# プログラミング タグ: , ,

こんにちはー!ニアです。

今回は「paizaオンラインハッカソン7」にチャレンジしてみました。

使用した言語はC#です。

まだ解いていない方は、ネタバレに気を付けてね。

 

 

1. まずは基本問題(ランクD)からGO!

1.1. E1: 文字列の連結(つり目セット)

文字列「Ann」(POH7のキャラの名前です)を標準入力の値の数だけつなげて出力します。

シンプルに繰り返し文で出力するもよし、C#のstring.Joinメソッドなどであらかじめつなげてから出力するもよしです。

 

1.2. H1 : 和の算出(ショートヘアセット)

標準入力から2つの値を読み取り、その和を出力します。

 

1.3. H2: 値の判別(ロングヘアセット)

標準入力から文字列「yes」または「no」を5つ読み取り、多い方の文字列を出力します。

シンプルに読み込んだ文字列と「yes」を比較します。

◆ ちょっとひと工夫

文字列が「no」であれば、「no」の数をカウントアップする代わりに、「yes」の数をカウントダウンします。すなわち、「yes」の数が正であれば「yes」の方が多く、負であれば「no」の数が多いことになります。

また、「yes」「no」は先頭文字だけでも判別できます。特にC言語でchar型配列を使う時に有効です。

 

1.4. H3: カウントダウン(ポニーテールセット)

標準入力から値を読み取り、カウントダウンを出力します。

 

1.5. H4: 割合の算出(ツインテールセット)

標準入力からカフェインの量と値段を2組読み取り、1円当たりのカフェインの量を求め、コストパフォーマンスの高い方(1か2)を出力します。

整数型で読み取った時は、割り算の時に片方の値を実習型にキャストしましょう。

 

1.6. C1: 文字列の結合・その2(セーラー服セット)

標準入力から単語の総数と単語を読み取り、単語をアンダーパー「_」でつなげた文字列を出力します。

string.Joinメソッドを使って、セパレーターにアンダーパーを指定し、単語をつなげます。

 

1.7. C2: 階乗の算出(カーディガンセット)

標準入力から数値を読み取り、その階乗を出力します。

 

2. ランクC編

2.1. C3: 文字のパターンを出力(縞ニーソセット)

標準入力から縞の幅と縞模様全体の長さを読み取り、「R」(赤)と「W」(白)で並べた文字列を出力します。

bool型変数1つを用意し、条件判断して文字「R」または「W」を出力し、n個出力する度にtrueとfalseを切り替えます。

 

またはLINQを使って文字のシーケンス(IEnumerable<char>型)を生成し(Takeメソッドで文字数を指定します)、string.Joinメソッドでつなげます。

 

2.2. E2: リストの比較・抽出(眼帯)

標準入力から自分が持っている巻番号と古本屋に売られている巻番号を読み取り、古本屋に売られている巻番号の内、自分が持っていないものを巻の小さい順に出力します。

巻番号を格納する配列を作り、LINQのExceptメソッドを使って自分が持っていないものを抽出します。

POH7-E2

◆ トラップに注意!

問題ページの入力例では、巻番号が小さい順に並んでいますが、条件の内容より、すべてのテストケースにおいて標準入力での巻番号が小さい順に並ぶとは限りません。対策として結果のリストまたは、自分が持っている巻番号リストと古本屋に売られている巻番号リストを昇順ソートしておきます。

ちなみにこれを忘れると、テストケース2で失敗します。

 

 

paizaオンラインハッカソン7(#_poh 7)にチャレンジしました!(後編)」に続きます。

それでは、See you next!

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*