結果

問題 No.365 ジェンガソート
ユーザー SagToki
提出日時 2018-06-11 11:34:26
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 90 ms / 2,000 ms
コード長 2,675 bytes
コンパイル時間 3,361 ms
コンパイル使用メモリ 104,576 KB
実行使用メモリ 25,472 KB
最終ジャッジ日時 2024-06-30 13:30:13
合計ジャッジ時間 4,713 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 41
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;

namespace JengaSort {
    class Program {
        static void Main(string[] args) {
            //ブロックの個数をNで定義
            int N = InputN(1, 100000);

            //それぞれのブロックの長さをEachLength配列で定義
            int[] EachLength = Input(N, 1, N);

            int Result = Processing(N , EachLength);
            int Answer = N - Result;

            Console.WriteLine(Answer);
        }

        //1行目の入力が数字で行われているか、数値は指定の範囲内のものかを判定
        static int InputN(int Min , int Max) {
            int Number = 0;
            try {
                Number = int.Parse(Console.ReadLine());
                if (Number < Min || Number > Max) {
                    Console.WriteLine(Min + "以上" + Max + "以下で入力してください");
                }  
            }catch(FormatException e) {
                Console.WriteLine("数字を入力してください");
            }catch(Exception E) {
                Console.WriteLine("想定外のエラーです");
            } 
            return Number;
        }

        //2行目の入力が数字で行われているか、数値は指定の範囲内のものかを判定
        static int[] Input(int N ,int Min , int Max) {
            String[] Numbers = null;
            try {
                Numbers = Console.ReadLine().Split();
                for(int i = 0; i < N; i++) {
                    if(int.Parse(Numbers[i]) < Min || int.Parse(Numbers[i]) > Max) {
                        Console.WriteLine(Min + "以上" + Max + "以下の数字で入力してください");
                    }
                }  
            } catch(Exception E) {
                Console.WriteLine("想定外のエラーです");
            }
            
            //String型配列をint型配列に変換
            int[] NewNumbers = new int[N];
            for (int j = 0; j < N; j++) {
                NewNumbers[j] = int.Parse(Numbers[j]);
                
            }
            return NewNumbers;
        }

        //移動がない数字の個数を計算するメソッド
        static int Processing(int N , int[] EachLength) {
            
            //変動しない数字の個数をCount変数で数える
            int Count = 0;
            
            //変動する最大を更新して所持する変数
            int Match = N;

            for (int i = N - 1; i >= 0; i--) {
                if(EachLength[i] == Match) {
                    Count++;
                    Match--;
                }
            }
            return Count;
        }
    }
}
0