1. len(bits) == 1이면 항상 0일 것이므로 return true
2. i = 0부터 시작해서 len(bits)-1보다 작을 때까지 반복
1) bits[i] == 1이면 항상 2bit일 것. 따라서 다음을 건너뛰도록 함. i += 2
2) 그렇지 않으면 항상 1bit일 것 (위의 경우에서는 다음을 건너뛰었으므로 10인 경우도 위에 포함되어서)
따라서 다음으로 감 i += 1
이 과정을 반복해서 len(bits)-1에 다다른다면 마지막 인덱스가 1bit인 것이고,
len(bits)-1보다 커진다면 2bit인 것이다.
이것을 이용해서 i 값과 len(bits)-1 값이 같은지 비교하는 것으로 return 한다면
같으면 bool값으로 1이 리턴되어서 true가 출력되고,
다르면 bool값으로 0이 리턴되어서 false가 출력된다.
파이썬에서 ->는 공부한 적이 없는데, function에 -> bool이라고 있으면 리턴타입이 bool이라는 것이다.
그리고 bits: List[int]는 bits가 int형의 배열이라는 의미이다.
class Solution:
def isOneBitCharacter(self, bits: List[int]) -> bool:
if(len(bits) == 1): return True
else:
i = 0
while(i < len(bits)-1):
if(bits[i] == 1):
i += 2
else:
i += 1
return i == len(bits)-1
[HackerRank] Compare the Triplets (Algorithm) (0) | 2021.01.04 |
---|---|
[HackerRank] Arrays - DS (Data Structure) (0) | 2021.01.04 |
[Leet Code] Two sums (Java) (0) | 2020.03.25 |
[SWEA] 8821. 적고 지우기 (0) | 2019.12.23 |
[SWEA] 4406. 모음이 보이지 않는 사람 (파이썬) (0) | 2019.09.18 |