[백준] 2018 연속된 자연수의 합 / 1940 주몽(투 포인터)

leeng·2023년 8월 10일
0

수들의 합 5

int getSumOfSequentialNumbers2(int n) {
        int count = 1; // n 자기 자신
        if (n == 1) {
            return count;
        }

        int i = 1;
        int j = 2;
        int sum = i + j;

        while (j < n ) {
            if (sum < n) {
                j++;
                sum += j;
            } else if (sum > n) {
                sum -= i;
                i++;
            }else {
                count++;
                j++;
                sum += j;
            }
        }
        System.out.println("i: "+i+" ||| J: "+j+  " ||| sum: " + sum);
        return count;
    }

주몽

    void makeArmor(int M, int[] arr) {
        int count = 0;
        Arrays.sort(arr); // 1 2 3 4 5 7

        // 숫자들이 유니크하고, 한번 쓰이면 필요 없어지고, 숫자 두 개를 뽑아서 작업을 한다... 투포인터!
        int i = 0;
        int j = arr.length - 1;

        while (i < j) {
            int sum = arr[i] + arr[j];
            if (sum == M) {
                count++;
                i++;
                j--;
            }else if(sum < M){
                i++;
            }else {
                j--;
            }
        }

        System.out.println(count);
    }
profile
기술블로그보다는 기록블로그

0개의 댓글