paizaラーニングのレベルアップ問題集「戦セット」からの出典です。
paiza.jp
・問題「お一人様一点限り」
あるスーパーでは、お一人様一点限りでセール価格の商品を販売することにしました。
そこで、一人のお客さんが2回以上その商品を買えないように、お客さんの名前をチェックすることにしました。
お客さんの名前が来た順番で入力されるので、そのお客さんが初めて来たのかどうかを判定し、結果を出力してください。
・入力される値:入力は以下のフォーマットで与えられます。
n
c_1
c_2
...
c_n
入力される文字列数n
c_1, c_2, ..., c_n は大文字、小文字のアルファベットからなる文字列
入力はn + 1行となり、末尾に改行を一つ含みます。
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
・期待する出力
初めて来たお客さんには YES
一度来たお客さんには NO
を出力してください。
ただし、同じ名前のお客さんはいないものとします。
・条件
すべてのテストケースにおいて、以下の条件をみたします。
1 ≤ n ≤ 20
1 ≤ (c_1の長さ), (c_2の長さ), ..., (c_nの長さ) ≤ 10
僕が作成、提出したコードは、以下のとおりです。
/* paizaラーニング: レベルアップ問題集「戦セット」 問題「お一人様一点限り」 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 N = sc.nextLine(); int n = Integer.parseInt(N); ArrayList list = new ArrayList(); for(int i = 0; i < n; i++) { String str = sc.nextLine(); if(list.contains(str)) { System.out.println("NO"); }else { list.add(str); System.out.println("YES"); } } } }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。