大文字のアルファベットから、その文字にある囲われた部分の数を出力する問題と、その提出コードの解答例です。
paizaラーニングのレベルアップ問題集「Dランク早解きセット」からの出典です。
paiza.jp
・問題
大文字のアルファベットには、囲われた部分があるものと、そうでないものがあります。
例えば、
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
・入力される値
入力は以下のフォーマットで与えられます
s
sは大文字アルファベット1文字
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
・期待する出力
入力されたアルファベットの囲われた部分の数を出力し、最後に改行して出力してください。
・条件
すべてのテストケースにおいて、以下の条件をみたします。
s は A ~ Z のいずれかの1文字
僕が作成、提出したコードは、以下のとおりです。
/* C言語によるアルファベットの穴の数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<stdio.h> #include<string.h> int main(void){ char s[5]; scanf("%s",s); if(strcmp(s,"A")==0 || strcmp(s,"D")==0 || strcmp(s,"O")==0 || strcmp(s,"P")==0 || strcmp(s,"Q")==0 || strcmp(s,"R")==0){ printf("1\n"); }else if(strcmp(s,"B")==0){ printf("2\n"); }else{ printf("0\n"); } return 0; }
/* Javaによるアルファベットの穴の数 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ import java.util.Scanner; import java.util.ArrayList; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); ArrayList list1 = new ArrayList(); list1.add("A"); list1.add("D"); list1.add("O"); list1.add("P"); list1.add("Q"); list1.add("R"); ArrayList list2 = new ArrayList(); list2.add("B"); if(list2.indexOf(str) != -1){ System.out.println(2); }else if(list1.indexOf(str) != -1){ System.out.println(1); }else{ System.out.println(0); } } }
これで「Dランク早解きセット」の全20題を解き終えました。
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。