본문 바로가기

algorithm

백준 1253번 좋다

https://www.acmicpc.net/problem/1253

 

아이디어:

1. vector, 정렬, 투 포인터 사용

2. 정수 범위이므로 음수 고려 > 끝 인덱스가 N - 1에서 시작

3. 자기자신을 더할 때는 제외한다.

 

// 1253

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	long N, answer = 0;
	cin >> N;
	vector<long> A(N, 0);
	long start = 0;
	long end = 0;

	for (int i = 0; i < N; i++) {
		cin >> A[i];
	}

	sort(A.begin(), A.end());
	
	for (int i = 0; i < N; i++) {
		start = 0;
		end = N - 1;
		while (start < end) {
			if (A[start] + A[end] == A[i]) {
				if (start != i && end != i) {
					answer++;
					break;
				}
				else if (start == i)
					start++;
				else if (end == i)
					end--;
			}
			else if (A[start] + A[end] < A[i]) {
				start++;
			}
			else if (A[start] + A[end] > A[i]) {
				end--;
			}
		}
	}

	cout << answer;

	return 0;

}

'algorithm' 카테고리의 다른 글

백준 11003번 최솟값 찾기  (0) 2024.12.15
백준 12891번 DNA 비밀번호  (0) 2024.12.15
백준 1940번 주몽  (0) 2024.12.01
백준 2018번 수들의 합 5  (0) 2024.11.24
백준 10986번 나머지 합  (0) 2024.11.24