Paiza Cランク獲得問題（Dランク相当） 配列活用メニュー②

paizaのCランク獲得問題の解答がなかったので、備忘録として残します。
明らかに簡単な問題の場合は省略しますが、個人的に少しでも考えたコードを残していきたいと思います。
初心者ですので醜いコードを書きますが、温かい目で見守っていただけると嬉しいです。
また、より良い記述方法などありましたら、コメント等で教えていただけると嬉しいです。

後半はランクC相当の内容になっていま。

# 目次
- 指定要素の削除
- 九九表
- 全ての要素を用いた処理
- 配列のサイズの変更
- 【配列への副作用を伴う操作】条件を満たす要素のみの配列作成
- 傾斜配点
- 内定
- queue (9) 係
- 二人三脚 
- ボウリング
- 【配列に対しての複雑な処理】集団行動


## 指定要素の削除
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__delete/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        int N =int.Parse(Console.ReadLine());
        int [] A= new int [N];
        
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }

        List<int> listA=new List<int>(A);
        int n=int.Parse(Console.ReadLine());
        listA.RemoveAt(n-1);
        foreach(var list in listA){
            Console.WriteLine(list);
        }
    }
}
```

## 九九表
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__reduse_easy/edit?language_uid=c-sharp)
```c#
using System;

class Program
{
    public static void Main()
    {
        for(int i=1;i<=9;i++){
            for(int j=1;j<=9;j++){
                if(j<9){
                    Console.Write(i*j+" ");
                }else{
                    Console.WriteLine(i*j);
                }
            }
        }
    }
}
```
## 全ての要素を用いた処理 
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__reduce/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    public static void Main()
    {
        int N=int .Parse(Console.ReadLine());
        int []A=new int[N];
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        for(int i=0;i<N;i++){
            for(int j=0;j<i;j++){
                Console.WriteLine(A[i]*A[j]);
            }
        }
    }
}
```

## 配列のサイズの変更
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__resize/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string [] Nn=Console.ReadLine().Split();
        int N=int.Parse(Nn[0]);
        int n=int.Parse(Nn[1]);
        int []A=new int[N];
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        List <int> result=new List<int>();
        for (int i = 0; i < Math.Min(n, N); i++){
            result.Add(A[i]);
        }
        for (int i = N; i < n; i++){
            result.Add(0);
        }
        foreach (var num in result){
            Console.WriteLine(num);
        }
        
    }
}
```
リストで実装しました。
## 重複要素の削除
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__unique/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    public static void Main()
    {
        int N=int .Parse(Console.ReadLine());
        int []A=new int[N];
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        
        int [] data =A.Distinct().ToArray();
        foreach(var result in data){
            Console.WriteLine(result);
        }
        
        
    }
}
```

## 【配列への副作用を伴う操作】条件を満たす要素のみの配列作成
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__filter/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string [] NK=Console.ReadLine().Split();
        int N=int.Parse(NK[0]);
        int K=int.Parse(NK[1]);
        int [] A= new int [N];
        
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        
        
        List <int> data =new List<int>();
        for(int i=0;i<N;i++){
            if(A[i]>=K){
                data.Add(A[i]);
            }
        }
        foreach(var result in data){
            Console.WriteLine(result);
        }
        
        
    }
}
```
## 傾斜配点
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__exam?language_uid=c-sharp)
```c#
using System;
using System.Linq;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []M=Console.ReadLine().Split().Select(int.Parse).ToArray();
        int [] result =new int[N];
        for(int i=0;i<N;i++){
            int []A=Console.ReadLine().Split().Select(int.Parse).ToArray();
            result[i]=M[0]*A[0]+M[1]*A[1]+M[2]*A[2]+M[3]*A[3]+M[4]*A[4];
        }
        Console.WriteLine(result.Max());
    }
}
```

## 内定
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__offer/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string []NKM=Console.ReadLine().Split();
        int N=int.Parse(NKM[0]);
        int K=int.Parse(NKM[1]);
        int M=int.Parse(NKM[2]);
        int []A=new int [N];
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        Array.Sort(A);
        Array.Reverse(A);
        List<int> result=new List<int>();
        for(int i=0;i<N;i++){
            if(A[i]>=K){
                result.Add(A[i]);
            }
        }
        if (result.Count <= M){
            result.Clear();
        }else{
            result.RemoveRange(0, M);
        }
        Console.WriteLine(result.Count);
    }
}
```
## queue (9) 係
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__queue/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        List<int> queue=new List<int>();
        for(int i=0;i<N;i++){
            string [] S=Console.ReadLine().Split();
            switch(S[0]){
                case "in":
                    queue.Add(int.Parse(S[1]));
                    break;
                case "out":
                    if(queue.Count>0){
                        queue.RemoveAt(0);
                    }
                    break;
            }
        }
        foreach(var result in queue){
                Console.WriteLine(result);
        }
    }
}
```

## 二人三脚
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__find_pair/edit?language_uid=c-sharp)
```c#
using System;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []A=new int [N];
        for(int i=0;i<N;i++){
            A[i]=int.Parse(Console.ReadLine());
        }
        Array.Sort(A);
        int result=A[1]-A[0];
        int one=0;
        int two=1;
        for(int i=0;i<N;i++){
            for(int j=i+1;j<N;j++){
                if(A[j]-A[i]<result){
                    result=A[j]-A[i];
                    one=i;
                    two=j;
                }
            }
        }
        Console.WriteLine(A[one]);
        Console.WriteLine(A[two]);
    }
}
```
## 場所取り
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__line_up/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string []NKF=Console.ReadLine().Split();
        int N=int.Parse(NKF[0]);
        int K=int.Parse(NKF[1]);
        int F=int.Parse(NKF[2]);
        List <int>A=new List<int>();
        for(int i=0;i<K;i++){
            A.Add(int.Parse(Console.ReadLine()));
        }
        A.RemoveRange(0,F);
        HashSet<int> result=new HashSet<int>(A);
        
        foreach(var data in result){
            Console.WriteLine(data);
        }

    }
}
```

## ボウリング
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__bowling/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;


class Program
{
    public static void Main()
    {
        int[][] P = new int[4][];
        for (int i = 0; i < 4; i++)
        {
            P[i] = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
            Array.Reverse(P[i]);
        }
        
        List<int> pin =new List<int>();
        for (int i = 3; i >= 0; i--)
        {
            for (int j = 0; j < P[i].Length; j++)
            {
                pin.Add(P[i][j]);
            }
        }
        
        int p=pin.IndexOf(1)+1;
        int count=0;
        
        foreach(var result in pin){
            if(result==1){
                count++;
            }
        }

        Console.WriteLine(p);
        Console.WriteLine(count);
        
    }
}


```
一番苦労しました。
二次元配列のまま行う方法が分からなかったので、一次元に変換して行いました。

## 【配列に対しての複雑な処理】集団行動
[問題文](https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__group_move/edit?language_uid=c-sharp)
```c#
using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string []NQ=Console.ReadLine().Split();
        int N=int.Parse(NQ[0]);
        int Q=int.Parse(NQ[1]);
        List<int> list=new List<int>();
        for(int i=0;i<N;i++){
            list.Add(i+1);
        }
        for(int i=0;i<Q;i++){
            string [] S=Console.ReadLine().Split();
            switch(S[0]){
                case "swap":
                    int A=int.Parse(S[1]);
                    int B=int.Parse(S[2]);
                    int tmp;
                    tmp=list[A-1];
                    list[A-1]=list[B-1];
                    list[B-1]=tmp;
                    break;
                case "resize":
                    int C=int.Parse(S[1]);
                    if (list.Count >= C){
                        list.RemoveRange(C, list.Count - C);
                    }
                    break;
                case "reverse":
                    list.Reverse();
                    break;
            }
        }
        foreach(var result in list){
            Console.WriteLine(result);
        }
    }
}

```