알고리즘

[leetcode] Height Checker

개발정리 2021. 8. 24. 22:19

https://leetcode.com/explore/learn/card/fun-with-arrays/523/conclusion/3228/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

 

특정 배열이 주어졌을때 해당 배열을 오름차순으로 정렬할 시 몇개의 원소를 이동해야 하는가에 대한 문제이다. 

 

일단, 입력받은 배열만큼의 동일한 배열을 새로 생성한 후 값을 복사해주었다. 

동일한 값을 가진 두개의 배열에서 배열 하나는 정렬을 진행한 후에 반복문을 통해 정렬되지 않은 배열과 인덱스의 값을 비교하여 다른 경우에만 카운트를 올린 후에 리턴해주었다. 

 

class Solution {
    public int heightChecker(int[] heights) {
        if (heights == null) return -1;
        
        int[] tmpHeights = new int[heights.length];
        for (int i=0; i<heights.length; i++) {
            tmpHeights[i] = heights[i];
        }
        
        Arrays.sort(heights);
        int count = 0;
        for (int i=0; i<heights.length; i++) {
            if (tmpHeights[i] != heights[i]) {
                count++;
            }
        }
        return count;
    }
}