[LeetCode] Delete Columns to Make Sorted

아르당·4일 전

LeetCode

목록 보기
206/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

모든 길이가 같은 n개의 문자열이 있는 배열 strs가 주어진다.
문자열은 각 줄에 하나씩 놓아 격자 모양을 만들 수 있다.

  • 예를 들어, strs = ["abc", "bce", "cae"]는 다음과 같이 나열할 수 있다.

    abc
    bce
    cae

사전순으로 정렬되지 않은 열을 삭제하려고 한다. 위 예시에서 0번째 열과 2번째 열은 정렬되어 있지만, 1번째 열은 정렬되어 있지 않아서 삭제해야한다.

삭제할 열의 개수를 반환해라.

Example

#1
Input: strs = ["cba", "daf", "ghi"]
Output: 1
Explanation: 열 0과 2는 정렬되어 있고, 열 1은 그렇지 않아서 하나의 열만 지운다.

#2
Input: strs = ["a", "b"]
Output: 0
Explanation: 열 0만 있고, 정렬되어 있다.지울 수 있는 열이 없다.

#3
Input: strs = ["zyx", "wvu", "tsr"]
Output: 3
Explanation: 3개의 모든 열이 정렬되어 있지 않다. 3개 다 지운다.

Constraints

  • n == strs.length
  • 1 <= n <= 100
  • 1 <= strs[i].length <= 100
  • strs[i]는 영어 소문자로 구성된다.

Solved

class Solution {
    public int minDeletionSize(String[] strs) {
        int result = 0;
        
        for(int j = 0; j < strs[0].length(); j++){
            result += isUnsorted(strs, j);
        }

        return result;
    }

    private int isUnsorted(String[] strs, int j){
        for(int i = 1; i < strs.length; i++){
            if(strs[i].charAt(j) < strs[i - 1].charAt(j)){
                return 1;
            }
        }

        return 0;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글