티스토리 뷰
반응형
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)
반응형
'Data Structure & Algorithm' 카테고리의 다른 글
[알고리즘-JS, Python] 백준 2018번: 연속된 자연수의 합 (투 포인터) (2) | 2024.03.17 |
---|---|
[알고리즘] 배열 중복 제거 시 정렬을 먼저 하는 이유 (0) | 2023.07.05 |
빅오 표기법에 따른 파이썬 코드 예시 (0) | 2023.06.22 |
[알고리즘] 빅 오 표기법 연습문제 (0) | 2022.08.03 |
[알고리즘-JS] 동적 계획법 - 최대 부분 증가 수열 (0) | 2022.05.09 |