1. 문제

 

 

같은 길이의 문자열로 구성된 string 배열이 주어진다.

 

각 문자열의 같은 인덱스가 순차적으로 발견되지 않는 개수를 출력하면 된다.

 

"aa", "bb", "ac"라면 각 문자열의 0번째 인덱스는 'a' - 'b' - 'a' 순이므로 순차적으로 발견되지 않는다.

각 문자열의 1번째 인덱스는 'a' - 'b' - 'c' 순이므로 순차적으로 발견된다.

 

 


 

2. 풀이 과정

 

각 인덱스의 값이 순차적이지 않았다고 이미 판단되었다면 앞으로는 검사할 필요가 없기 때문에 bool 배열을 하나 선언하고, true로 초기화해 두었다.

단순하게 2중 for문으로 두 번째 문자열부터 검사를 실시하였다.

 

public class Solution {
    public int MinDeletionSize(string[] strs) {
        var result = 0;
        var strLength = strs[0].Length;
        var isSorted = new bool[strLength];

        isSorted = Enumerable.Repeat(true, strLength).ToArray();

        for(int i = 1, length = strs.Length; i < length; ++i)
        {
            for(int j = 0; j < strLength; ++j)
            {
                if(isSorted[j] && strs[i - 1][j] > strs[i][j])
                {
                    isSorted[j] = false;
                    result++;
                }
            }
        }

        return result;
    }
}

 

 

 

 

반응형