Example #1
0
        static void Main(string[] args)
        {
            /*
             * 이 문제는 12시(0시), 3시, 6시, 9시 총 4가지의 시간이 반복된다는 것을 먼저 깨달아야한다.
             * 4번 이후부터는 시간이 계속 반복되므로, 모든 경우의 수는 4^10(버튼 갯수가 10개이다.)번이 된다. (대략 백만번정도됨)
             */

            int[] sampleCase = new int[16]
            {
                3, 0, 6, 0,
                0, 9, 3, 0,
                3, 0, 6, 3,
                0, 3, 0, 6
            };
            int[] testCase01 = new int[16]
            {
                12, 6, 6, 6,
                6, 6, 12, 12,
                12, 12, 12, 12,
                12, 12, 12, 12
            };
            int[] testCase02 = new int[16]
            {
                12, 9, 3, 12,
                6, 6, 9, 3,
                12, 9, 12, 9,
                12, 12, 6, 6
            };


            ClockBoard board = new ClockBoard(4, 4, 10);

            board.SetClocks(testCase01);

            board.SetButtonLink(0, 0, 1, 2);
            board.SetButtonLink(1, 3, 7, 9, 11);
            board.SetButtonLink(2, 4, 10, 14, 15);
            board.SetButtonLink(3, 0, 4, 5, 6, 7);
            board.SetButtonLink(4, 6, 7, 8, 10, 12);
            board.SetButtonLink(5, 0, 2, 14, 15);
            board.SetButtonLink(6, 3, 14, 15);
            board.SetButtonLink(7, 4, 5, 7, 14, 15);
            board.SetButtonLink(8, 1, 2, 3, 4, 5);
            board.SetButtonLink(9, 3, 4, 5, 9, 13);

            Console.WriteLine($"버튼을 누른 횟수:{new AlignClockCalculator(board, 0).ComputeMinimumButtonPressCount()}");
        }
Example #2
0
 public AlignClockCalculator(ClockBoard board, int alignTime)
 {
     this.board     = board;
     this.alignTime = alignTime;
 }