Dev.baelanche

[백준 7453] 합이 0인 네 정수 본문

Data Structure & Algorithm/PS - JAVA

[백준 7453] 합이 0인 네 정수

baelanche 2019. 7. 16. 21:39
반응형

 

A, B, C, D 배열의 각각을 더해서 0과 비교하기에는 시간이 너무 오래걸린다.

 

1. A, B의 모든 부분합을 저장한 배열을 만든다. (C, D의 부분합 배열이어도 상관없다.)

2. C, D의 모든 부분합을 저장한 Map을 만든다. 부분합 중 중복된 수가 있다면 카운트를 올린다.

   Map의 Key를 sum, Value를 카운트로 사용했다.

3. A, B의 부분합 배열과 Map의 원소들을 비교하며 두 원소의 합이 0일 경우 카운트만큼 개수를 올린다.

 

코드는 알아보기 꽤나 쉽다.

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int temp[][] = new int[n][4];
        for(int i=0; i<n; i++) {
            temp[i][0] = sc.nextInt();
            temp[i][1] = sc.nextInt();
            temp[i][2] = sc.nextInt();
            temp[i][3] = sc.nextInt();
        }
        
        int a[] = new int[n*n];
        Map<Integer, Integer> b = new HashMap<Integer, Integer>();
        int idx = 0;
        for(int i=0; i<n; i++) {
            for(int j=0; j<n; j++) {
                a[idx++] = temp[i][0] + temp[j][1];
                int sum = temp[i][2] + temp[j][3];
                if(b.containsKey(sum)) b.put(sum, b.get(sum) + 1);
                else b.put(sum, 1);
            }
        }
        
        long result = 0;
        for(int i=0; i<n*n; i++) {
            int key = -a[i];
            if(b.containsKey(key))
                result += b.get(key);
        }
        System.out.println(result);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 2420] 사파리 월드  (0) 2019.07.16
[백준 3009] 네 번째 점  (0) 2019.07.16
[백준 1072] 게임  (0) 2019.07.16
[백준 2869] 달팽이는 올라가고 싶다  (0) 2019.07.16
[백준 1484] 다이어트  (0) 2019.07.05
Comments