개발 일지
944. Delete Columns to Make Sorted (열을 삭제하여 정렬하기) 본문
길이가 모두 같은 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 시켜주었습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
1470. Shuffle the Array (배열 섞기) (0) | 2023.02.27 |
---|---|
926. Flip String to Monotone Increasing (문자열을 뒤집어서 모노톤 증가시키기) (2) | 2023.02.06 |
2244. Minimum Rounds to Complete All Tasks (모든 작업을 완료하기 위한 최소 라운드) (0) | 2023.01.16 |
55. Jump Game (점프 게임) (0) | 2023.01.09 |
733. Flood Fill (홍수 채우기) (0) | 2023.01.09 |