paizaラーニング データセット選択メニュー 動的配列 Java 解答

# STEP: 1 ランダムアクセス

# 問題
https://paiza.jp/works/mondai/data_structure/data_structure__array_step1

# 解答
```java:step1.java
import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        sc.nextLine();
        for(int i = 1; i <= m; i++){
            if(i == m){
                System.out.println(sc.nextInt());
            } else {
                sc.nextInt();
            }
        }
        sc.close();
    }
}
```
# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/3f244cd8-d6d5-a2ea-a896-3876a726a9c8.png)

# STEP: 2 複数回のランダムアクセス

# 問題
https://paiza.jp/works/mondai/data_structure/data_structure__array_step2

# 解答
```java:step2.java
import java.util.*;


public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        
        // 改行
        sc.nextLine();
        
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0; i < n; i++){
            list.add(sc.nextInt());
        }
        
        // 改行
        sc.nextLine();
        
        int q = sc.nextInt();
        
        for(int i = 0; i < q; i++){
            System.out.println(list.get(sc.nextInt()-1));
        }
        
        sc.close();
    }
}
```
# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/4dd42781-37b4-7803-893e-e1fcc06e8505.png)



# STEP: 3 最大値と最小値

# 問題
https://paiza.jp/works/mondai/data_structure/data_structure__array_step3

# 解答
```java:step3.java
import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        
        int max = Integer.max(a,b);
        max = Integer.max(max,c);
        
        int min = Integer.min(a,b);
        min = Integer.min(min,c);

        System.out.println(max-min);
        
    }
}

```
※sortを使うともっとスマートだった

# 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/18445b35-e86a-cdc6-9aef-d625d88bfccd.png)

# STEP: FINAL問題 動的配列

# 問題
https://paiza.jp/works/mondai/data_structure/data_structure__array_boss

# 解答
```java:final.java
import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int q = sc.nextInt();
        
        List<Integer> list = new ArrayList<Integer>();
        for(int i = 0; i < n; i++){
            list.add(sc.nextInt());
        }
        
        for(int i = 0; i < q; i++){
            manipulateList(sc, list);
        }
    }
    
    /**
     * リストの操作
     * 
     * push_back x : list の末尾に x を追加する
     * pop_back : list の末尾を削除する
     * print : list を半角スペース区切りで1行に出力する
     * 
     * @param sc 操作内容
     * @param list 操作したリスト
     */
    private static void manipulateList(Scanner sc, List<Integer> list){
        switch(sc.nextInt()){
            case 0:
                //0 x は push_back x
                int x = sc.nextInt();
                list.add(x);
                break;
            case 1:
                // 1 は pop_back
                list.remove(list.size() - 1);
                break;
            case 2:
                // 2 は print
                for(int i = 0; i < list.size(); i++){
                    if(i != list.size()-1){
                        System.out.print(list.get(i) + " ");
                    }else{
                        System.out.println(list.get(i));
                    }
                }

                break;
        }
    } 
    
}
```
# 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2918186/8f14fc49-d8a5-a05d-b441-a23c9b625776.png)