Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[국비지원] 30일차 - Number of Good Pairs(leetCode) 본문

개발공부/TIL

[국비지원] 30일차 - Number of Good Pairs(leetCode)

jnnjnn 2024. 3. 20. 21:06

 

1512. Number of Good Pairs
조건

 

같은 값의 요소를 가진 인덱스를 쌍으로 반환하고 그 쌍의 갯수를 구하는 문제이다.

오늘 배운 Map 컬렉션을 활용하기 위해 일부러 Map을 사용해서 풀었다

class Solution {
    public int numIdenticalPairs(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        int count = 0;
        for(int i = 0; i<nums.length; i++){
            map.put(i, nums[i]);
        }
        Set<Integer> set = map.keySet();
        for(int i = 0; i<set.size(); i++){
            for(int j = 0 ; j<set.size(); j++){
                if(map.get(i)==map.get(j) && i != j){
                    count++;
                }
            }
        }
        return count/2;
    }
}

 

 

leetCode는 효율성이 높은 사람들의 코드들을 볼 수 있는데, 

내 풀이보다는 다른 사람의 풀이가 인상깊어서 포스팅하게 되었다.

 

class Solution {
    public int numIdenticalPairs(int[] nums) {
        int ans = 0;
        int arr[] = new int[101];
        for(int a:nums)
        {
            ans += arr[a]++;
        }
       return ans;
    }
}

 

문제의 조건에서 요소의 값은 100이하이기 때문에 길이가 101인 새 배열을 만들고

해당 요소의 값에 해당하는 인덱스에 1씩 더한다. 여기서 arr[a] 뒤의 ++ 연산자는 먼저 += 연산이 실행된 후에 실행되기 때문에, Pair가 아닌 값은 0을 더하고 무시된다. 이후에 Pair를 만날 때마다 변수 ans의 값과 1이 더해진 ans의 값이 더해진다.

 

순서 없는 경우의 수인 조합에서 골라야 할 가짓수가 2개 밖에 없을 때는 해당 순서의 조합 개수와 다음 순서의 조합 개수의 차가 1씩 증가하는 형태로 늘어난다.

 

예를 들면,

 

2가지만 뽑을 때

2개 중에서 뽑는 경우의 수는 : 1

3개 중에서 뽑는 경우의 수는 : 3 , 이전 경우의 수와의 차 : 2

4개 중에서 뽑는 경우의 수는 : 6, 이전 경우의 수와의 차 : 3,

5개 중에서 뽑는 경우의 수는 : 10, 이전 경우의 수와의 차 :4

이다

 

2024.03.01 - [개발공부/TIL] - [국비지원] 18일차 - nCr, nPr

 

[국비지원] 18일차 - nCr, nPr

CS 스터디를 지난 주부터 시작했는데, 오늘 이번주 스터디도 완료하면서 2주차가 되었다. 매주 각자 주제를 정해서 발표하는 형식인데, 나는 이번주에 REST api에 대해서 조사했다. CRUD 방식이나 api

abc-datatype.tistory.com

조합의 경우의 수를 구하는 방법은 위 포스팅 참고

 

이러한 규칙성 때문에 위와 같은 형태의 코드가 가능하다.

 

처음에는 조건이 없어서 왜 저런 코드가 가능한지 이해하기 어려웠지만 스터디원분의 도움으로 이해하게 되었다

이런 규칙성을 알고 있다면 코딩 테스트를 할 때 유용하게 사용할 수 있을 것 같다!

 

 

TIL

2024.03.20 - [개발공부/JAVA] - [JAVA] Map 컬렉션

 

[JAVA] Map 컬렉션

Map 컬렉션은 키(key)와 값(value)로 구성된 엔트리(Entry) 객체를 생성한다. 여기서 키와 값은 모두 객체이다. Map에서 키는 중복 저장할 수 없다. 다만 값은 중복 저장할 수 있다. 기존에 저장된 키와

abc-datatype.tistory.com

2024.03.20 - [개발공부/JAVA] - [JAVA] Stack, Queue

 

[JAVA] Stack, Queue

LIFO와 FIFO 컬렉션 후입선출(LIFO)은 나중에 넣은 객체가 먼저 빠져나가고, 선입선출(FIFO)은 먼저 넣은 객체가 먼저 빠져나가는 구조를 말한다. 컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택(

abc-datatype.tistory.com

 

'개발공부 > TIL' 카테고리의 다른 글

[국비지원] 32일차  (2) 2024.03.22
[국비지원] 31일차 - Stream  (0) 2024.03.22
[국비지원] 29일차  (0) 2024.03.19
[국비지원] 28일차 - Minimum Absolute Difference  (0) 2024.03.18
[국비지원] 27일차 - 정규표현식  (0) 2024.03.15