본문 바로가기

Algorithm/String

(C++, Rust) - LeetCode (easy) 944. Delete Columns to Make Sorted

반응형

https://leetcode.com/problems/delete-columns-to-make-sorted/description/

 

Delete Columns to Make Sorted - LeetCode

Can you solve this real interview question? Delete Columns to Make Sorted - You are given an array of n strings strs, all of the same length. The strings can be arranged such that there is one on each line, making a grid. * For example, strs = ["abc", "bce

leetcode.com

문자열을 다뤄보는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

삭제해야할 열을 의미하는 변수 columns_to_delete를 선언 후 0으로 초기화해줍니다. * c++에선 camel case, rust에서는 lint 규칙에 따라 snake case로 선언했습니다.

📔 풀이과정

매 열을 검사하며 사전순이 아니라면 columns_to_delete를 1씩 증가시켜줍니다. 부등호 연산자로 크기를 비교해 검사가 가능합니다.

📔 정답 출력 | 반환

columns_to_delete를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    int minDeletionSize(vector<string>& strs) {
        int columnsToDelete = 0;
        for(int i = 0; i < strs[0].size(); i++) {
            bool isNotLexicographically = false;
            for(int j = 0; j < strs.size() - 1; j++) {
                if(strs[j][i] > strs[j+1][i]) {
                    isNotLexicographically = true;
                    break;
                }
            }
            if (isNotLexicographically) columnsToDelete++;
        }
        return columnsToDelete;
    }
};

📔 Rust

impl Solution {
    pub fn min_deletion_size(strs: Vec<String>) -> i32 {
        let mut columns_to_delete = 0;

        for i in 0..strs[0].len() {
            for j in 0..strs.len() - 1 {
                if strs[j].as_bytes()[i] > strs[j + 1].as_bytes()[i] {
                    columns_to_delete += 1;
                    break;
                }
            }
        }

        columns_to_delete
    }
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.