6์ฃผ์ฐจ ์์์ผ
- ๊ฐ์ธ ๊ณต๋ถ (๋ฆฟ์ฝ๋ ์ฑ๋ฆฐ์ง)
1๋ถํฐ n๊น์ง์ ์์ฐ์๊ฐ ๋ด๊ธด ๋ฆฌ์คํธ์์ 2๊ฐ ๋ค์ด๊ฐ ์์ 0๊ฐ ๋ค์ด๊ฐ ์ ์ฐพ์ ๋ฐํํ๊ธฐ
Input: nums = [1,2,2,4]
Output: [2,3]
Input: nums = [1,1]
Output: [1,2]
set
์ผ๋ก ๋ฐ๊ฟ์ set(1~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]
set(num)
(์ค๋ณต์ด ์ ๊ฑฐ๋จ) ์ ์ดํฉ์ ๋นผ๋ฉด num
์์ ๋น ์ง ์ซ์๋ฅผ ๊ตฌํ ์ ์๋ค.num
์ ์ดํฉ์์ set(num)
์ ์ดํฉ์ ๋นผ๋ฉด ๋๋ค.์ฐธ๊ณ )
๋ฉ์ฉก : [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]