리트코드 풀이

leetcode 1720 풀이(파이썬, 스위프트)

ag2개발자 2022. 2. 7. 03:19

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
    }
}