[Week 6-2] ๐Ÿ”ฅํŠน๊ฐ• 2์ผ์ฐจ

Jadeยท2021๋…„ 3์›” 3์ผ
0

๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech

๋ชฉ๋ก ๋ณด๊ธฐ
27/54

6์ฃผ์ฐจ ์ˆ˜์š”์ผ

  • ๊ฐœ์ธ ๊ณต๋ถ€ (๋ฆฟ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€)

[LeetCode 645. Set Mismatch]

1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ์—์„œ 2๊ฐœ ๋“ค์–ด๊ฐ„ ์ˆ˜์™€ 0๊ฐœ ๋“ค์–ด๊ฐ„ ์ˆ˜ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

Input: nums = [1,2,2,4]
Output: [2,3]

Input: nums = [1,1]
Output: [1,2]
  • ์ ‘๊ทผ
    ๋ฆฌ์ŠคํŠธ์—๋Š” ์›๋ž˜ 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด = n.
    ๋น ์ง„ ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ set์œผ๋กœ ๋ฐ”๊ฟ”์„œ set(1~n)๊ณผ์˜ ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ
    ์ค‘๋ณต๋˜๋Š” ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด...? ์ผ๋‹จ ๋ฐ˜๋ณต.
    ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n)
  • ์ฝ”๋“œ
from collections import defaultdict
class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        N = len(nums)
        origin = set(range(1,N+1))
        
        [missed] = origin - set(nums)
        duplicated = -9999
        
        dct = defaultdict(bool)
        for n in nums:
            if dct[n]:
                duplicated = n
                break
            
            dct[n] = True

        return [duplicated, missed]

  • ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?
    ์ค‘๋ณต๋˜๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ ๋ฐ˜๋ณต์„ ์•ˆ ๋Œ๊ณ  ๋” ์šฐ์•„ํ•˜๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ.

    ์ƒ์ƒ๋„ ๋ชปํ•œ ๋ฐฉ๋ฒ•
    ํ•ฉ์„ ์ด์šฉํ•œ๋‹ค! 1~n๊นŒ์ง€ ๋ฉ€์ฉกํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ดํ•ฉ์—์„œ set(num)(์ค‘๋ณต์ด ์ œ๊ฑฐ๋จ) ์˜ ์ดํ•ฉ์„ ๋นผ๋ฉด num์—์„œ ๋น ์ง„ ์ˆซ์ž๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    2๋ฒˆ ๋“ค์–ด๊ฐ„ ์ˆซ์ž๋ฅผ ๊ตฌํ•  ๋•Œ๋Š” num์˜ ์ดํ•ฉ์—์„œ set(num)์˜ ์ดํ•ฉ์„ ๋นผ๋ฉด ๋œ๋‹ค.
    ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N) ์œผ๋กœ ๊ทธ๋Œ€๋กœ์ง€๋งŒ ๋” ๋ฉ‹์ง€๋‹ค...
์ฐธ๊ณ )

๋ฉ€์ฉก : [1, 2, 4, 3, 5]
num : [1, 2, 2, 3, 5]
set : [1, 2,   3, 5]
class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        N = len(nums)
        total = (N * (N+1)) // 2  # 1~n๊นŒ์ง€ ๋‹ค ๋ฉ€์ฉกํ•œ ๊ฒฝ์šฐ
        missing = total - sum(set(nums))
        duplicate = sum(num) - sum(set(nums))
        return [duplicate,missing]
profile
๋ฐ˜๊ฐ€์›Œ์šฉ

0๊ฐœ์˜ ๋Œ“๊ธ€