[๋ฐฑ์ค(BOJ)] 3273๋ฒ: ๋ ์์ ํฉ (Two Pointers Algorithm, C++)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N, X;
int count=0;
scanf("%d", &N);
int right=N-1, left=0;
vector<int> A(N);
for(int i=0; i<N; i++){
cin >> A[i];
}
scanf("%d", &X);
sort(A.begin(), A.end());
while(1){
if(left >= right) break;
int sum = A[left]+A[right];
if(sum == X){
count++;
left++;
}
if(sum >= X) right--;
if(sum < X) left++;
}
printf("%d", count);
}
sort๋ก ์ ๋ ฌ
sum์ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ ์ธํด์ ์ฌ์ฉ -> ๋ฐ์์ sum์ ์ ์ธํ๊ณ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฌ์ฉํ๋ฉด ์ ๋๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์๋๋ค.
sum == X: count ์ฆ๊ฐ์ํค๊ณ ๋ค์ ํ์ ์ํด left++, right--
sum > X: ์๊ฐ ๋ ์์์ ธ์ผ ํ๋ฏ๋ก right์ ๊ฐ์์ํจ๋ค.
sum < X: ์๊ฐ ๋ ์ปค์ ธ์ผ ํ๋ฏ๋ก left๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
left๋ ๊ณ์ ์ฆ๊ฐํ๊ณ , right์ ๊ณ์ ๊ฐ์ํ๋ฏ๋ก left >= right์ผ ๋ ์ข ๋ฃํ๋ค.
#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main()
{
int N, X; //N: ์์ ์ ์ ๊ฐ์, X: ํ๊ฒ ํฉ
unordered_map<int, int> m;
scanf("%d", &N);
int right=N-1, left=0;
vector<int> A(N);
for(int i=0; i<N; i++){
cin >> A[i];
}
scanf("%d", &X);
sort(A.begin(), A.end());
while(1){
if(left >= right) break;
printf("left: %d, right: %d\n", left, right);
int sum = A[left]+A[right];
if(sum == X){
printf("(%d, %d)\n", A[left], A[right]);
m.insert({A[left], A[right]});
left++;
}
if(sum >= X) right--;
if(sum < X) left++;
}
for(auto i: m)
printf("(%d, %d) ", i.first, i.second);
printf("\n# of X: %d", m.size());
}
๋ง์ง๋ง์ A[3], A[5]์ผ ๋ ํ๊ฒ ํฉ X๋ณด๋ค ์ปค์ right์ ๊ฐ์์์ผฐ๋๋ฐ A[3]+A[4]์ผ ๋๋ ๋ ์์์ left๋ฅผ ์ฆ๊ฐ์์ผฐ์ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์์ ์ผ์ด์ค์ ๊ฒฝ์ฐ, left == right์ด ๋๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์์ ๋น ์ ธ๋์ค๊ฒ ๋๋ค.
์ ์ฝ๋๋ ์ ๋๋ก ๊ตฌํ๋์ง ๊ฒ์ฆํ๊ธฐ ์ํ ์ฝ๋์ด๋ค.
[๋ฐฑ์ค(BOJ)] 1620๋ฒ: ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ (Hash, C++) (0) | 2021.01.29 |
---|---|
[๋ฐฑ์ค(BOJ)] 1260๋ฒ: DFS์ BFS (C++) (0) | 2021.01.22 |
[๋ฐฑ์ค(BOJ)] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค (DFS/BFS, C++) (0) | 2021.01.21 |
[๋ฐฑ์ค(BOJ)] 5585๋ฒ: ๊ฑฐ์ค๋ฆ๋ (๊ทธ๋ฆฌ๋(Greedy) ์๊ณ ๋ฆฌ์ฆ, C++) (0) | 2021.01.20 |
[HackerRank] Alternating Characters (String Manipulation) (C++, Python) (0) | 2021.01.17 |