『プログラマの考え方がおもしろいほど身につく本』で学んだ問題解決の考え方

  • 6
    Like
  • 4
    Comment
More than 1 year has passed since last update.

問題を細分化して考える。

ある問題を解こうとした時、そのまま解くのではなく、細分化して考えることが大切。

問題の類似を考えて、応用できないかを考える。

細分化と繋がってくるが、まずは類似した問題を以前解いたことがないかを考える。

例 以下の図形を作るプログラムを考える。(本書ではC++で書かれているが、僕はJSで書く。)

########
######
####
##

手順①

#だけ出力するプログラムを書く

document.write('#');

手順②

########を出力するプログラムを書く

for (var i = 0; i <= 8; i ++){
     document.write('#')
};

手順③

########
########
########
########
を出力するプログラムを書く。

for (var i = 0; i <= 4; i++){
     for(var j = 0; j <= 8; j++){
          document.write('#')
     };
     document.write('<br>')
};

手順④

########
######
####
##
を出力するプログラムを書く。

for (var i = 0; i < 4; i++) {
     for (var j = 0; j < 8 - i*2; j++) {
          document.write('#')
     };
     document.write('<br>')
};

結論

図形の全体を出力するプログラムを一気に組もうとすると大変。
だから、小さい部分から初めて、徐々に大きくしていくことが大切。

類似としては、

########
########
########
########

を初めに考えて、次に

########
######
####
##

を作るためにどうするかを考えれば良い。

以上。