今週の活動では個々が別々の問題を解きました。

そこで今週のブログではそこそこ簡単な問題を問いていた私が、競プロとはこんなものだというのを理解してもらうために実際に解いていた問題を使って簡単なガイドをしてみようと思います。

問題 : AtCoder Beginner Contest 062 B問題

解いてみたい人は一旦記事を読まずに解いてみましょう!

必要な関数は『scanf』『printf』『for』くらいで、他に必要な知識は文字列の使い方だと思います。

コンテスト名にもある通りビギナー向けの問題で、もしプログラミングでわからない所があってもGoogle先生に相談すればプログラミング力は段々とついていきます。

内容としては、縦と横のピクセル数と中身の文字が与えられるのでそれを囲って出力してください、というもので例を見ればなんとなく理解できるはずです。

 


 

ここからの解説は私の考え方です。おそらくこの考え方以外にも答え方はたくさんあるので、色々な答え方を考えてみるといいと思います。

 

まず最初に{横のピクセル数+2}個の#を出力します。横のピクセル数だけだと、囲ったときの側面が溢れてしまうからです。

次にfor文で{縦のピクセル}回、#を出力してからfor文でn行目の文字を出力し、再び#で閉じます。(#//中身//#を何度も行う)

このとき改行することを忘れないように気をつけましょう。

最後にもう一度最初と同じく{横のピクセル数+2}個の#を出力して完成です。

普段皆さんが使うプリンターというイメージで、上側から段々と形作っていくと考えると単純に考えられると思います。

いかにして問題を簡単に・単純に捉えてプログラムにするかが競プロの大切な考え方です。(難しい問題だとアルゴリズムというものを活用して解いていくことになります)

少しでも興味が沸いた方は、AtCoder Beginner Contestの過去問Aizu Online Judgeのプログラミング入門などにチャレンジしてみてください!

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)