-
[🤷♀️ LeetCode Python] 393. UTF-8 ValidationAlgorithm/1일 1코테 2020. 10. 27. 15:08반응형
✍LeetCode✍
393. UTF-8 Validation
문제 및 문제설명
UTF-8임을 검증하는 문제
leetcode.com/problems/utf-8-validation/
내가 쓴 풀이
노가다 했는데도 틀림!!!
밑에 에러가 발생한 후 걍 포기했다 ㅎ
def validUtf8(self, data: List[int]) -> bool: data = [bin(i).replace('0b', '').zfill(8) for i in data] print(data) first = data[0] if first.startswith('0'): return True elif first.startswith('110'): if len(data) >= 2: if data[1] and data[1].startswith('10'): return True return False elif first.startswith('1110'): if len(data) >= 3: if data[1].startswith('10') and data[2].startswith('10'): return True return False elif first.startswith('11110'): if len(data) >= 4: if data[1].startswith('10') and data[2].startswith('10') and data[3].startswith('10'): return True return False else: return False
틀린 이유
특정 갯수만큼 검사한 이후 나머지는 10, 110, 1110, 11110으로 시작하면 안된다.
해답 풀이
def validUtf8(self, data: List[int]) -> bool: def check(size): for i in range(start+1, start+size+1): if i >= len(data) or (data[i] >> 6) != 0b10: return False return True start = 0 while start < len(data): first = data[start] if (first >> 3) == 0b11110 and check(3): start += 4 elif (first >> 4) == 0b1110 and check(2): start += 3 elif (first >> 5) == 0b110 and check(1): start += 2 elif (first >> 7) == 0: start += 1 else: return False return True
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[😭 LeetCode Python] 371. Sum of Two Integers (0) 2020.10.27 [💕 LeetCode Python] 191. Number of 1 Bits (0) 2020.10.27 [💕 LeetCode Python] 461. Hamming Distance (0) 2020.10.27 [💕 LeetCode Python] 136. Single Number (0) 2020.10.27 [💕 LeetCode Python] 240. Search a 2D Matrix 2 (0) 2020.10.26