寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: Javaによるレベルアップ問題集「お一人様一点限り」

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ラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。