【Dランク速解きセット】> 【早解16】アルファベットの穴の数 (paizaランク D 相当) [難易度: 1209 ±10]
※リンク先へ移動するためには[paiza]へのログインが必要です。
大文字のアルファベットには、囲われた部分があるものと、そうでないものがあります。
例えば、
・Aは上部の三角形の部分が囲われており、囲われた部分が1つ存在します。
・Bは上部と下部がそれぞれ囲われており、囲われた部分が2つ存在します。
・Cには囲われた部分は存在しません。
入力として、大文字のアルファベットが与えられるので、
その文字にある囲われた部分の数を出力してください。
ただし、囲われた部分の数は以下であるとします。
・0個 : C, E, F, G, H, I, J, K, L, M, N, S, T, U, V, W, X, Y, Z
・1個 : A, D, O, P, Q, R
・2個 : B
入力値(例)
D
出力値(例)
1
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php $zero =["C", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N","S", "T", "U", "V", "W", "X", "Y", "Z"]; $one = ["A", "D", "O", "P", "Q", "R"]; $two = ["B"]; $s = trim(fgets(STDIN)); $key0 = in_array($s, $zero); $key1 = in_array($s, $one); $key2 = in_array($s, $two); if($key0) { echo 0; } elseif($key1) { echo 1; } elseif($key2) { echo 2; } ?> |
解説
in_array()という関数を使いました。
配列に指定した値が存在するか検索する関数です。
1 |
in_array($値, $配列 [, $strict = FALSE]); |
第一引数は検索する値、第二引数は検索対象の配列を渡します。
第二引数の配列の中から第一引数の値が存在するかを確認し、存在した場合は「true」が返され、存在しなかった場合は「false」が返されます。
第三引数はオプションで、boolean型のtrueを渡すことで、検索する値の型まで厳密にチェックできます。(strict=厳密)
デフォルトでは「false」が設定されているため、第三引数に「true」を渡さなければ型までチェックしない検索をします。
この解答例では、受け取った文字列をそれぞれ0個の$zero、1個の$one、2個の$twoと検索しています。そしてif()で「true」の値を出力するようにしました。