728x90
반응형
3273번 두 수의 합
문제 풀이
#include <iostream>
#include <algorithm>
using namespace std;
void fast_io(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int n, arr[100001], x, cnt = 0;
int main(void)
{
fast_io();
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr[i];
cin >> x;
sort(arr, arr + n);
int l = 0, r = n - 1;
while (l < r)
{
if (arr[l] + arr[r] == x)
cnt++, l++, r--;
else if (arr[l] + arr[r] > x)
r--;
else
l++;
}
cout << cnt;
}
시간제한을 보지않고 for 문 두개로 돌려서 풀었다가 틀렸다.
다른방법이 있는걸 알게되어 찾아보니 정렬후 쌍을 맞춰야 한다고 했다.
이분탐색같은 방법으로 해결했다.
728x90
반응형
'자라는 개발자 > 문제풀이' 카테고리의 다른 글
백준 c++ 1406번 에디터 (0) | 2022.01.14 |
---|---|
백준 c++ 1919 애너그램 만들기 (1) | 2022.01.12 |
백준 c++ 1475번 방 번호 (0) | 2022.01.10 |
백준 c++ 1021 회전하는 큐 (0) | 2022.01.09 |
백준 c++ 23841번 데칼코마니 (1) | 2022.01.06 |