Hard deck/reindexing d2

008 : 좋은 수 구하기

서버관리자 페페 2023. 6. 19. 11:37

 

여러번 target의 tC이므로 선형 공간 필요

 

문제의 조건에서 재료들은 0일수도 음수일수도 있으므로 타겟에 부합해도 pointer 검증 필요

 

for문 밖으로 cable 연결해야 되는것은 for문 밖에서 연결해서 프로그램에서 plate or receive해서 나올것

 

좋은 수는 여러 조합이 필요한 것이 아닌, 단 하나의 조합으로도 조건은 충족되므로 해당 타겟에서는 그 즉시 break로 빠져나온 뒤 바로 다음 것으로 넘어간다

 

s의 dd는 ++;이고, e는 --; 이므로 조합이 T와 비교하여 크거나 작을 때 옮길 Pointer는 정해져 있다

 

 

 

*(2 pointer와 binary search의 차이)

- 둘 다 s, e, connector, check-in(target)이 필요하지만

 

binary search :

범위에 속해있는지 아닌지(check-in 사용),

아닌 범위는 반으로 잘라버리기 위해 포인터 사용(별도 m 필요), 

 

2 pointer :

TP를 사용한 합(구간) 이 부합하는지(target 사용)

아닌 TP는 바로 옆으로 이동하기 위해 포인터 사용 

 

 

 

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        // ISC
        Scanner sc = new Scanner(System.in);
        int V = sc.nextInt();

        // D2F
        int[] TP = new int[V+1];
        for (int i = 1; i <= V; i++) {
            TP[i] = sc.nextInt();
        }

        // OP
        int counter = 0;
        for (int i = 1; i <= V; i++)  {

            int T = TP[i];
            int s = 1;
            int e = V;

            while (s < e) {
                if (TP[s] + TP[e] == T) {

                    if (s != i && e != i) {
                        counter++;
                        break;
                    } else if (s == i) {
                        s++;
                    } else if (e == i) {
                        e--;
                    }

                } else if (TP[s] + TP[e] < T) {
                    s++;
                } else {
                    e--;
                }
            }
        }
        // OEC
        System.out.println(counter);

    }
}

 

 

'Hard deck > reindexing d2' 카테고리의 다른 글

001 - string 입력을 개별합해서 출력하기  (0) 2023.06.20
009 : sliding window  (0) 2023.06.19
007 : 투 포인터 > 무작위 배열의 2가지 합  (0) 2023.06.19
006 : 투 포인터  (0) 2023.06.19
030 : 블루레이 만들기  (1) 2023.06.19