diff --git a/problems/height-checker/height_checker.go b/problems/height-checker/height_checker.go new file mode 100644 index 000000000..2a0c52877 --- /dev/null +++ b/problems/height-checker/height_checker.go @@ -0,0 +1,15 @@ +package height_checker + +import "sort" + +func heightChecker(heights []int) int { + ans, dst := 0, make([]int, len(heights)) + copy(dst, heights) + sort.Ints(dst) + for i, v := range dst { + if heights[i] != v { + ans++ + } + } + return ans +} diff --git a/problems/height-checker/height_checker_test.go b/problems/height-checker/height_checker_test.go new file mode 100644 index 000000000..8bbc78d1b --- /dev/null +++ b/problems/height-checker/height_checker_test.go @@ -0,0 +1,23 @@ +package height_checker + +import "testing" + +type caseType struct { + input []int + expected int +} + +func TestHeightChecker(t *testing.T) { + tests := [...]caseType{ + { + input: []int{1, 1, 4, 2, 1, 3}, + expected: 3, + }, + } + for _, tc := range tests { + output := heightChecker(tc.input) + if output != tc.expected { + t.Fatalf("input: %v, output: %v, expected: %v", tc.input, output, tc.expected) + } + } +}