공부기록/백준

[백준] 1253번 좋다

메델 2023. 12. 13. 05:04

[방법1 - HashMap 이용]

 

import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int N = kb.nextInt();

        int[] arr = new int[N];

        for (int i = 0; i < N; i++) {
            arr[i] = kb.nextInt();
        }

        int count = 0;

        for (int i = 0; i < N; i++) {
            HashMap<Integer, Integer> map = new HashMap<>();
            for (int j = 0; j < N; j++) {
                if (i == j) continue;

                int diff = arr[i] - arr[j];
                if (map.containsKey(diff)) {
                    count++;
                    break;
                }
                map.put(arr[j], j); 
            }
        }

        System.out.println(count);
    }
}

 

[방법2- 투포인터 이용]

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
    	
    	Scanner kb = new Scanner(System.in);
    	int n = kb.nextInt();
    	int[] arr = new int[n];
    	int count = 0;
    	
    	for(int i=0; i<n; i++) {
    		arr[i] = kb.nextInt();
    	}
    	
    	Arrays.sort(arr);
    	
    	for(int i=0; i<n; i++) {
    		int target = arr[i];
    		int lt=0, rt=n-1;
    		
    		while(lt<rt) {
    			int sum = arr[lt] + arr[rt];
    			
    			if(sum == target) {
    				
    				if( rt != i && lt!= i) {
    					count++;
    					break;
    				}
    				
    				else if(rt == i) rt--;
    				else if(lt == i) lt++;
    			}else if(sum< target) lt++;
    			else {
    				rt--;
    			}
    		}
    	}
    	System.out.println(count);

    	
    }
}

'공부기록 > 백준' 카테고리의 다른 글

[백준] 2164번 카드2  (0) 2023.12.13
[백준] 1157번 단어 공부  (0) 2023.12.13
[백준] 1940번 주몽  (0) 2023.12.11
[백준] 10986번 나머지 합  (0) 2023.12.11
[백준] 11866번 요세푸스 문제 0  (0) 2023.12.05