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()}"); }
public AlignClockCalculator(ClockBoard board, int alignTime) { this.board = board; this.alignTime = alignTime; }