Skip to main content

πŸš€ 944. Delete Columns to Make Sorted

Delete Columns to Make Sorted - LeetCode

κ°„λ‹¨λ³΄μ΄λŠ” λ¬Έμ œλ‹€.

문제 해석은 strs = ["abc", "bce", "cae"] μ΄λ ‡κ²Œ 값이 μ£Όμ–΄μ‘Œμ„λ•Œ | a | b | c | | b | c | e | | c | a | e |

μ„Έλ‘œλ‘œ a b c λŠ” μ •λ ¬λ˜μ–΄ 있고

μ„Έλ‘œλ‘œ b c a λŠ” μ •λ ¬λ˜μ–΄ μžˆμ§€ μ•Šλ‹€.

κ·Έλž˜μ„œ b c a 인 λ‘λ²ˆμ§Έ 열은 μ§€μ›Œμ•Ό ν•˜κ³  μ£Όμ–΄μ§„ λ¬Έμžμ—μ„œ 총 λͺ‡κ°œλ₯Ό μ§€μ›Œμ•Ό ν•˜λƒ?κ°€ λ¬Έμ œμ΄λ‹€.

κ·Έλž˜μ„œ 일단 브루트 포슀둜 ν’€μ—ˆλ‹€.

class Solution:
def minDeletionSize(self, strs: List[str]) -> int:
del_col = 0
# strs[0][0] strs[1][0] str[2][0]
length = 0
if len(strs) > 0:
length = len(strs[0])
sorted_col = [[] for _ in range(0, len(strs[0]))]
for col in range(0, length):
for i in range(0, len(strs)):
sorted_col[col].append(strs[i][col])
for chars in sorted_col:
if chars != sorted(chars):
del_col += 1
return del_col

속도가… λ„ˆλ¬΄ μ•ˆμ’‹λ‹€. 자 더 λΉ λ₯΄κ²Œ κ°œμ„ μ„ ν•΄λ³΄μž

class Solution:
def minDeletionSize(self, strs: List[str]) -> int:
del_col = 0
# strs[0][0] strs[1][0] str[2][0]
col_length = 0
if len(strs) > 0:
col_length = len(strs[0])
for col in range(0, col_length):
for i in range(0, len(strs)):
if i - 1 >= 0 and (strs[i][col] < strs[i - 1][col]):
del_col += 1
break
return del_col

μ–΄μ°¨ν”Ό ν•œλ²ˆμ€ λŒμ•„μ•Ό ν•˜λŠ” for λ¬Έ μ•ˆμ—μ„œ ν•œλ°©μ— 끝내렀 ν–ˆλ‹€.

만쑱슀럽ꡰ..πŸ€”

근데 더 λŠλ¦¬λ‹€? λ©”λͺ¨λ¦¬ μ‚¬μš©μ–‘μ€ ν™•μ‹€νžˆ μ€„μ—ˆλŠ”λ° 느린게 기뢄이 λ‚˜μ˜λ‹€

Chat GPTμ—κ²Œ λ¦¬νŒ©ν† λ§μ„ μ‹œμΌ°λ”λ‹ˆ 더 κΉ”λ”ν•˜κ²Œ λ§Œλ“€μ–΄μ€¬λ‹€. (λ¦¬νŒ©ν† λ§μ€ 더 μž˜ν•˜λŠ”κ²ƒ κ°™λ‹€.)

class Solution:
def minDeletionSize(self, strs: List[str]) -> int:
deletions = 0
for col in range(len(strs[0])):
for i in range(1, len(strs)):
if strs[i][col] < strs[i-1][col]:
deletions += 1
break
return deletions

λ§Œμ•½μ— strsκ°€ 0보닀 μž‘μ•„μ§€λ©΄ μ–΄λ–»κ²Œ ν•˜λƒκ³  ν–ˆλ”λ‹ˆ

class Solution:
def minDeletionSize(self, strs: List[str]) -> int:
if not strs:
return 0
deletions = 0
for col in range(len(strs[0])):
for i in range(1, len(strs)):
if strs[i][col] < strs[i-1][col]:
deletions += 1
break
return deletions
				if not strs:
return 0

이걸 λ„£μœΌλ©΄ λ˜μ§€ μ•Šλƒκ³  ν•˜λ”λΌ ν›Œλ₯­ν•˜λ‹€. λ‚˜λ³΄λ‹€ 더 κΉ”λ”ν•˜κ²Œ λ¦¬νŒ©ν† λ§ 해쀬닀.

μ†λ„κ°œμ„ μ„ λ¬Όμ–΄λ΄€λ”λ‹ˆ

class Solution:
def minDeletionSize(self, strs: List[str]) -> int:
deletions = 0
for col in range(len(strs[0])):
prev_char = strs[0][col]
for i in range(1, len(strs)):
if strs[i][col] < prev_char:
deletions += 1
break
prev_char = strs[i][col]
return deletions

μ΄λ ‡κ²Œ λ§Œλ“€μ–΄μ€¬λ‹€.

μŒβ€¦ 이건 κ²°κ΅­ λ‚΄ μ½”λ“œλž‘ μ†λ„μ°¨μ΄λŠ” 크지 μ•Šμ„ 것 κ°™λ‹€.

κ·Έλž˜μ„œ 문제λ₯Ό 풀어달라 ν–ˆλ‹€.

κ·Έλž¬λ”λ‹ˆ ν’€μ–΄μ€€ 닡은 이것과 κ°™λ‹€.

def minDeletionSize(strs):
deletions = 0
for col in range(len(strs[0])):
for i in range(1, len(strs)):
if strs[i][col] < strs[i-1][col]:
deletions += 1
break
return deletions

μœ„μ— λ¦¬νŒ©ν† λ§ν•œ λ‹΅κ³Ό κ°™λ‹€.

흠… κ²°κ΅­ ν•™μŠ΅λœ 데이터에 μ˜ν•΄μ„œ 닡을 μ£ΌλŠ”κ±°λΌ ν•œκ³„κ°€ μžˆλ‚˜?

λ‚˜μ€‘μ— 4.0 버전이 λ‚˜μ˜€λ©΄ 더 ν–₯μƒλœ 닡을 μ£Όλ €λ‚˜? κΆκΈˆν•˜κΈ΄ν•˜λ‹€.

(PS. λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ ν‘Ό 것듀도 μœ„μ— λ‹΅κ³Ό μœ μ‚¬ν•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆλ‹€.)