結果

問題 No.365 ジェンガソート
ユーザー SagTokiSagToki
提出日時 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
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 24 ms
17,792 KB
testcase_01 AC 24 ms
17,792 KB
testcase_02 AC 24 ms
17,920 KB
testcase_03 AC 25 ms
17,792 KB
testcase_04 AC 23 ms
17,920 KB
testcase_05 AC 25 ms
17,664 KB
testcase_06 AC 24 ms
17,792 KB
testcase_07 AC 24 ms
17,920 KB
testcase_08 AC 24 ms
17,920 KB
testcase_09 AC 25 ms
17,920 KB
testcase_10 AC 25 ms
17,792 KB
testcase_11 AC 25 ms
17,792 KB
testcase_12 AC 24 ms
17,792 KB
testcase_13 AC 24 ms
17,792 KB
testcase_14 AC 23 ms
17,920 KB
testcase_15 AC 25 ms
17,920 KB
testcase_16 AC 70 ms
23,680 KB
testcase_17 AC 82 ms
24,704 KB
testcase_18 AC 33 ms
19,200 KB
testcase_19 AC 81 ms
24,832 KB
testcase_20 AC 44 ms
20,476 KB
testcase_21 AC 41 ms
19,840 KB
testcase_22 AC 72 ms
23,704 KB
testcase_23 AC 54 ms
21,448 KB
testcase_24 AC 70 ms
23,252 KB
testcase_25 AC 40 ms
19,840 KB
testcase_26 AC 56 ms
21,968 KB
testcase_27 AC 82 ms
25,088 KB
testcase_28 AC 61 ms
21,860 KB
testcase_29 AC 80 ms
24,576 KB
testcase_30 AC 62 ms
22,220 KB
testcase_31 AC 44 ms
20,000 KB
testcase_32 AC 43 ms
20,352 KB
testcase_33 AC 84 ms
24,832 KB
testcase_34 AC 37 ms
19,456 KB
testcase_35 AC 68 ms
23,184 KB
testcase_36 AC 84 ms
25,472 KB
testcase_37 AC 87 ms
25,088 KB
testcase_38 AC 90 ms
25,088 KB
testcase_39 AC 86 ms
25,088 KB
testcase_40 AC 86 ms
25,088 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
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