leetcode

2341. Maximum Number of Pairs in Array

냠냠맨 2023. 2. 3. 00:57

⚡문제정보

해쉬를 이용한것과 이용하지 않은것의 시간복잡도가 크게 차이나는 문제입니다.

첫번째 인덱스와 일치하는 값을 지워나가면서

[없앤 쌍 , 남은 숫자]를 반환하는게 조건입니다.

 

0 index를 그대로 구현하려고하면 배열을 실제로 조작해야하겠지만

저는 일치하는 쌍을 지워나갈거라면 값이 홀수로 남는 경우만 남겨주고

짝수인 경우에는 없앤 쌍을 카운트해주는 걸 통해 한번의 반복으로 답을 찾는 방법을 사용했습니다.


🔍나의 풀이

var numberOfPairs = function(nums) {
    let map = new Map()
    let answer = 0
    for(i=0; i<nums.length ;i++) {
        let val = map.get(nums[i]) 
        map.set(nums[i], (val||0) +1 )
        if(map.get(nums[i]) === 2) {
            answer++
            map.delete(nums[i])
        }
    }
    
    return [answer,map.size]
};

get 값이 2가되면 answer값을 올려주고 해당 키를 지워주었습니다.

어차피 키값이 2보다 커서 지운 키를 다시 만나더라도 새로 set해주면 되니까요

쉬운 문제였지만 빠른 런타임으로 해결해서 기분이 좋네요

반응형