티스토리 뷰

반응형

N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 "좋다(GOOD)"고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다.

 

풀이

JavaScript

const fs = require('fs');
const input = fs.readFileSync('input.txt').toString().trim().split('\n');

const N = parseInt(input[0]);
const A = input[1].split(' ').map(Number);

let Result = 0;

for (let k = 0; k < N; k++) {
    let find = A[k];
    let i = 0;
    let j = N - 1;

    while (i < j) {
        if (A[i] + A[j] === find) {
            if (i !== k && j !== k) {
                Result++;
                break;
            } else if (i === k) {
                i++;
            } else if (j === k) {
                j--;
            }
        } else if (A[i] + A[j] < find) {
            i++;
        } else {
            j--;
        }
    }
}

console.log(Result);

 

 

 

Python

import sys
input = sys.stdin.readline

N = int(input())
Result = 0
A = list(map(int, input().split()))
A.sort()

for k in range(N):
    find = A[k]
    i = 0
    j = N - 1

    while i < j:
        if A[i] + A[j] == find:
            if (i != k and j != k):
                Result += 1
                break
            elif (i == k):
                i += 1
            elif (j == k):
                j -= 1
        elif A[i] + A[j] < find:
            i += 1
        else:
            j -= 1

print(Result)

 

 

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31