1. 배열을 만든다
2. 배열의 첫번째 원소에 first를 넣는다.
3. 2번째 원소 부터는 first, encoded[0], encoded[1], encoded[2]을 비트 연산한 결과를 배열에 넣는다.
(3번이 풀이가 될 수 있는 이유는 xor연산은 역함수를 해도 결과가 같기 때문이다.)
4. 4번이 핵심인데 매번 비트연산한 결과를 first와 encoded를 포함한 배열에 갱신시켜줘야 한다. 이것을 하지 않아서 결과가 다르게 나왔었고 수정했다.
파이썬:
class Solution:
def decode(self, encoded: List[int], first: int) -> List[int]:
b=[first]
encoded.insert(0, first)
a=encoded
for i in range(len(encoded)-1):
b.append(encoded[i]^encoded[i+1])
encoded[i+1]=encoded[i]^encoded[i+1]
return b
스위프트:
class Solution {
func decode(_ encoded: [Int], _ first: Int) -> [Int] {
var a = encoded
a.insert(first, at:0)
var b = [first]
for i in 0..<(encoded.count){
b.append(a[i]^a[i+1])
a[i+1] = a[i]^a[i+1]
}
return b
}
}
'리트코드 풀이' 카테고리의 다른 글
Leetcode 1528 풀이(파이썬, 스위프트) (0) | 2022.02.08 |
---|---|
leetcode 1281 풀이(파이썬, 스위프트) (0) | 2022.02.07 |
Leetcode 1365 풀이(파이썬, 스위프트) (0) | 2022.02.06 |
리트코드 771 풀이(파이썬, 스위프트) (0) | 2022.02.06 |
Leetcode 1431 풀이(파이썬, 스위프트) (0) | 2022.02.06 |