728x90
문제주소 : https://www.acmicpc.net/problem/1253
문제 : N개의 수 중에 다른 두 수의 합으로 표현되는 수 개수 찾기
풀이 : 정렬시킨 뒤 투포인터 기술로 양 끝에서부터 더하며 비교한다.
추가로 '다른 두 수의 합으로' 라는 말에 주의하여 자기 자신을 더하지 않도록 예외처리한다.
코드는 아래 숨김
더보기
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
int n;
std::cin >> n;
std::vector<int> item(n, 0);
for (int i = 0; i < n; ++i) {
std::cin >> item[i];
}
std::sort(item.begin(), item.end());
int result = 0;
for (int k = 0; k < n; ++k) {
int start = 0, end = n - 1;
while (start < end) {
if (start == k) {
start++;
continue;
}else if (end == k) {
end--;
continue;
}
long long temp = item[start] + item[end];
if (temp > item[k]) {
end--;
}
else if (temp < item[k]) {
start++;
}
else {
result++;
break;
}
}
}
std::cout << result;
}
알게 된 것 : 파이썬 알고리즘 인터뷰 책에서 했던 투포인터 문제 기억이 새록새록 나며 그땐 어떻게 적용할지 너무 어려웠다고 생각했었는데 지금은 이렇게 쉬웠나 싶은..
728x90
'운동하는 개발자 > 알고리즘, 코딩테스트' 카테고리의 다른 글
Beakjoon] 버블 소트 2 (백준 1517코테) - 정렬 (0) | 2023.11.25 |
---|---|
실무자가 경험한 코딩테스트(알고리즘) 책 추천 + 스토리.. (2) | 2023.11.09 |
Beakjoon] 나머지 합 구하기 (백준 코테) = 구간합 (0) | 2023.11.05 |
Beakjoon] 구간 합 구하기 5 (백준 코테) = 구간합 (0) | 2023.11.02 |
HackerRank [String] Weighted Uniform Strings /알고리즘 해커랭크 (0) | 2021.05.09 |