Shuffle the Array & Number of Good Pairs

Guk's.velog·2024년 6월 15일
0

코딩테스트

목록 보기
15/22

문제 : Shuufle the Array

해당 문제는 배열을 주어주고 절반씩 섞은 배열을 return 하는 문제이다.

ex) [x1,x2,...,xn,y1,y2,...,yn] => [x1,y1,x2,y2,...,xn,yn]

풀이

var shuffle = function(nums, n) {
    let arr = []

    //배열을 순회하면서 x1의 값과 y1의 값을 더해준다.
    for(let i = 0 ; i < n ; ++i){
        arr.push(nums[i])
        arr.push(nums[n + i])
    }

    return arr
};

이번 문제는 금방 풀렸으므로, 다른 문제를 하나 더 풀어본다

문제 : Number of Good Pairs

1부터 100까지의 정수 배열을 주고, 같은 수들의 배열 조합에 대한 수를 찾아 총합을 리턴하는 문제이다.

ex) nums = [1,2,3,1,1,3] , out = 4 , 조건에 만족하는 배열 = (0,3), (0,4), (3,4), (2,5)

코드

var numIdenticalPairs = function(nums) {
  	//결과값
    let res = 0
    //배열에서의 가장 큰 수
    let max = Math.max(...nums)

    //1부터 최대 100까지
    for(let i = 1 ; i <= max; ++i){
      	//각 수의 개수를 count
        let arr = nums.filter((value) => value == i)
		
        //각 수의 1개부터 n개까지의 총 합
        for(let j = 1 ; j < arr.length ; ++j){
            res += (arr.length - j)
        }
    }

    return res
};

느낀점

다른 풀이들을 보니 이중 포문을 활용해서 풀었지만.. 처음에 떠올랐음에도 불구하고 웬지모르게 이중 포문은 손이 안간다. 하지만 이번 문제에서의 결과는 위와 같이 풀었을 경우 배열의 수와 관계없이 1부터 max값까지 계산하는 loop가 무조건 들어가기 때문. ex) nums = [100,100]일 경우 무조건 O(100)을 먹고 들어가게 된다.

0개의 댓글