카테고리 없음

Boj-1253번/java/투포인터

바이솔 2024. 9. 30. 23:58

 

n받기
n개만큼 숫자들 입력받기

1. n개의 수 정렬
2. n개의 수들에서 좋은 수 찾기..? how?
3.

9
123456789
 a
   a

1번 : 각각의 수들 n개에 대해 두개의 수로 할수있는지 탐색한다.

n번 반복 각각의 수에 대해 나머지 수로 될 수 있는가
for n
    f

정말 간단하게 문제를 풀기 위한 수도코드를 임시로 작성한 거. 수도코드도 점점 체계화하고 쓰는 습관을 들여야겠다. 또한 아래 직접 코드를 작성하며 자기 자신은 두 수의 조합으로 만들 수 없다는 사실을 까먹었는데 그 사실은 문제를 풀 때 인지하고 있었으나 어느 순간 까먹었다. 이러한 주의점들은 미리미리 적어놓는 습관을 들이자.

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] a =new int[n];
        for(int i=0;i<n;i++){

            a[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(a);

        int answer=0;

        for(int i=0;i<n;i++) {
            int sum = a[i];
            int start = 0;
            int end = n-1;

            while(start!=end) {
                if (start == i) { // 자기 자신을 제외
                    start++;
                    continue;
                }
                if (end == i) { // 자기 자신을 제외
                    end--;
                    continue;
                }
                int is_sum = a[start] + a[end];

                if (sum < is_sum) {
                    end--;

                } else if (sum > is_sum) {
                    start++;

                }
                else{
                    answer++;
                    break;

                }
            }

        }
        sb.append(answer);
        System.out.print(answer);

    }
}