Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

944. Delete Columns to Make Sorted (열을 삭제하여 정렬하기) 본문

코딩 테스트/LeetCode

944. Delete Columns to Make Sorted (열을 삭제하여 정렬하기)

포카리tea 2023. 1. 18. 14:03

길이가 모두 같은 n 문자열로 이루어진 strs배열이 주어집니다.
문자열은 각 줄에 하나씩 배열되어 그리드를 만들 수 있습니다.

 

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


사전순으로 정렬되지 않은 열을 삭제하려고 합니다. 위 예에서 (0-인덱스) 열 0('a''b''c')와 2('c''e''e')는 정렬되어 있지만 열 1('b''c''a')는 그렇지 않습니다. 따라서 1번 열을 삭제해야합니다.

삭제해야 할 열 수를 반환하세요.

 

예시 1:

입력: strs = ["cba", "daf", "ghi"]
출력: 1
설명: 그리드는 다음과 같습니다.
  cba
  daf
  ghi
열 0과 2는 정렬되어 있지만 열 1은 정렬되어 있지 않으므로 1개 열만 삭제하면 됩니다.

예시 2:

입력: strs = ["a", "b"]
출력: 0
설명: 그리드는 다음과 같습니다.
  a
  b
열 0은 유일한 열이며 정렬되어 있으므로 어떤 열도 삭제하지 않습니다.

예시 3:

입력: strs = ["zyx", "wvu", "tsr"]
출력: 3
설명: 그리드는 다음과 같습니다.
  zyx
  wvu
  tsr
3개의 열이 모두 정렬되지 않았으므로 3개를 모두 삭제합니다.

 

조건:

  • n == strs.length
  • 1 <= n <= 100
  • 1 <= strs[i].length <= 1000
  • strs[i]은 영문 소문자로 구성되어 있습니다.

정답:

public class Solution {
    public int MinDeletionSize(string[] strs) {
        int count = 0;
        for (int i = 0; i < strs[0].Length; i++)
        {
            List<char> besort = new List<char>();

            for (int j = 0; j < strs.Length; j++)
            {
                besort.Add(strs[j][i]);
            }

            string bestring = string.Join("", besort);
            besort.Sort();
            string afstring = string.Join("", besort);

            if (!bestring.Equals(afstring))
            {
                count += 1;
            }
        }

        return count;
    }
}

해설: 

열 값을 besort에 저장한 후 정렬한 값과 정렬을 하지 않은 값이 다르다면 count를 올려주고  string의 길이만큼 반복해준 후 마지막에  return 시켜주었습니다.