문제 설명

정수 배열 nums가 주어집니다.

0 <= a < b < nums.length 이면서 nums[a] == nums[b]를 만족하는 a, b 쌍의 개수를 출력하는 프로그램을 구현하세요.


입력 형식

· nums : 정수 배열

· a, b, : 0 이상의 정수


출력 형식

· 문제의 조건을 만족하는 a, b의 쌍의 개수를 정수로 반환


제약 사항

· 0 <= nums.length <= 100

· 1 <= nums[i] <= 100


입출력 예시

· 입력

  · nums = {2, 5, 6, 3, 2, 6, 6}

· 출력 : 4

· 설명 : 조건을 만족하는 a, b 쌍은 아래와 같다.

  · (0, 4), (2, 5), (2, 6), (5, 6)


작성 코드

import java.util.HashMap;
import java.util.Map;

class Solution244 {
    public int solution(int[] nums) {
        int count = 0;
        Map<Integer, Integer> map = new HashMap<>();

        for (int num : nums) {
            if (map.containsKey(num)) {
                count += map.get(num);
                map.put(num, map.get(num) + 1);
            } else {
                map.put(num, 1);
            }
        }
        return count;
    }

    public static void main(String[] args) {
        Solution244 st = new Solution244();
        int[] nums = {2, 5, 6, 3, 2, 6, 6};
        System.out.println(st.solution(nums));
    }
}

/*
이 코드에서는 Map을 사용하여 각 숫자가 몇 번 등장하는지 저장합니다.
만약 이미 등장한 숫자라면, 해당 숫자가 등장한 횟수만큼 중복된 쌍이 추가됩니다.
숫자가 처음 등장하는 경우에는 Map에 1을 값으로 저장합니다.
반복이 끝나면 중복된 값을 가지는 쌍의 개수를 반환합니다.
 */

 

정답 코드

class Solution {
    public int solution(int[] nums) {
        int result = 0;

        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] == nums[j]) {
                    result++;
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {
        Solution st = new Solution();
        int[] nums = {2, 5, 6, 3, 2, 6, 6};
        System.out.println(st.solution(nums));
    }
}