์๊ฐ์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ค ํ๋๋ก ์ค๋ช ๋๋ ์ ์ฒ๋ฆฌ์ด๋ค.
์ ์ฒ๋ฆฌ๋ผ๋ ๋จ์ด์ ์๋ฏธ์ ๊ฐ์ด ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํด ์ ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์์ ํ์์ ํผํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฌธ์ 1) ๊ดํธ ์ ๋ง๋ค์ด์ฃผ๊ธฐ

๋จ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ฉด ๋ชจ๋ ์ธ๋ฑ์ค๋ฅผ ํ์ํ๋ฉด์ ์ฌ๋ ๊ดํธ๊ฐ ๋๊ฐ์ธ ์์์ ์ ์ฐพ๊ณ , ๋ซ๋ ๊ดํธ๊ฐ ๋๊ฐ์ธ ๋ ์ ์ ์ ๋ถ ์ฐพ์์ ํด์ผ๋๋ค. ์ด๋ (((()))), (())(())์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์ต์ ์ ๊ฒฝ์ฐ๋ก ์๊ฐํ ์ ์๋๋ฐ, ((์ ์ก๊ณ ))์ ์ฐพ๊ธฐ์ํด ๋ชจ๋ ์ธ๋ฑ์ค๋ฅผ ํ์ํ๋ ๊ณผ์ ์์ ์๊ฐ๋ณต์ก๋๋ O(N^2)๊ฐ ๋์ค๊ฒ ๋๋ค.
sol1) ๋์ ํฉ ์์ฉ ์ ์ฒ๋ฆฌ
๋์ ํฉ์ ๋์์ ํน์ ์ธ๋ฑ์ค ์ค๋ฅธ์ชฝ์ ))์ ๊ฐ์๋ก ํ๋ค.
( ( ) ) ( ( ) ) ( ( ) ) ์ ๊ฐ์ ์์๊ฐ ์๋ค๊ณ ํ์.
์ธ๋ฑ์ค์ ์ญ์์ผ๋ก ))์ ๋์ ๊ฐ์๋ฅผ ์ฑ์ฐ๋ฉด
3 3 3 2 2 2 2 1 1 1 1 0 ์ด ๋๋ค.
((์ ))๊ฐ ์์ ์ด๋ฃจ๋ฏ๋ก ์ฒ์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ฉฐ ((๊ฐ ๋์ฌ ๊ฒฝ์ฐ ๋์ ๊ฐ์๋ฅผ ์ ์ฒด ์ ๋ต์ ํฉํด์ฃผ๋ฉด ๋๋ค.
#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
using namespace std;
string a;
queue<int>b1, b2;
long long ans;
int main() {
cin>>a;
for(int i=1; i<a.size(); i++) {
if(a[i] == '(' && a[i-1] == '(')
b1.push(i);
if(a[i] == ')' && a[i-1] == ')')
b2.push(i-1);
}
while(!b1.empty()) {
int cur = b1.front(); b1.pop();
while(b2.front() < cur && !b2.empty()) {
b2.pop();
}
if(b2.empty())
break;
ans += b2.size();
}
cout<<ans;
return 0;
}
๋๋ ((์ ))๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ถ ์ ์ฅํ๊ณ )) queue์ front๊ฐ ((์ ์ธ๋ฑ์ค๋ณด๋ค ์๋ค๋ฉด ๋นผ์ฃผ๊ณ )) queue์ size๋ฅผ ๋ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋ค.
๋ฌธ์ 2) ์ด์ํ ํญํ

ํน์ ๋ฒํธ๋ฅผ ๊ฐ์ง ํญํ์ด ๊ฐ์ฅ ์ต๊ทผ ์ด๋ ์ธ๋ฑ์ค์ ์ ๋ ฅ์ด ๋ค์ด์๋์ง ๋ฏธ๋ฆฌ ์ฒดํฌํด๋์ผ๋ฉด ๋๋ค.
ํญํ์ ๋ฌด์กฐ๊ฑด ์์๋๋ก ๋ค์ด์ค๊ณ , K ๊ฑฐ๋ฆฌ ์ด๋ด์ ์๋ ๊ฐ์ ๋ฒํธ๋ฅผ ๊ฐ์ง ํญํ๋ค์ ๋ฌด์กฐ๊ฑด ๊ฐ์ฅ ์ต๊ทผ ๋ค์ด์จ ํญํ๊ณผ ์ฐ๊ด์ด ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ฐ์ฅ ์ต๊ทผ ๋ค์ด์จ ๊ฐ์ ๋ฒํธ์ ํญํ์ ์ฒดํฌํ๊ณ , K ์ดํ์ธ์ง ํ์ธํ๋ฉด ๋๋ค.
#include <iostream>
#include <algorithm>
using namespace std;
int N, K, bomb[1000001], ans;
int main() {
cin>>N>>K;
for(int i=1; i<=N; i++) {
int bnum; cin>>bnum;
if(!bomb[bnum]) bomb[bnum] = i;
else if(i - bomb[bnum] <= K) ans = max(ans, bnum);
else bomb[bnum] = i;
}
if(!ans) cout<<-1;
else cout<<ans;
return 0;
}
๋ฌธ์ 3) ์ต์ ์๋์ง ๋น์ฉ


๊ทธ๋ฆฌ๋ ๋๋์ ํ์ด๋ฅผ ์๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
ํน์ ์ง์ ์ ๋๋ฌํ๊ธฐ ์ํ ์ต์ ์ฝ์คํธ๋ ํน์ ์ง์ ์ด์ ์ ์๋ ๋ค๋ฅธ ์ง์ ๋ค ์ค์ ๊ฐ์ฅ ์์ ์ฝ์คํธ๋ฅผ ๊ฐ์ง ์ง์ ์์ ์๋์ง๋ฅผ ์ฑ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํน์ ์ง์ ์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ํน์ ์ง์ ๊น์ง์ ๋ชจ๋ ์ง์ ์ ์ต์ ์ฝ์คํธ๋ฅผ ์ ์ฅํ๊ณ , ๋ชจ๋ ์ง์ ์ฌ์ด์ ์๋์ง ๊ฐ์ ๊ณฑํด์ฃผ๋ฉด ๋๋ค.
#include <iostream>
using namespace std;
long long N, energy[100001], cost[100001], dp[100001], ans;
int main() {
cin>>N;
for(int i=0; i<N-1; i++) cin>>energy[i];
for(int j=0; j<N; j++) cin>>cost[j];
dp[0] = cost[0];
for(int i=1; i<N-1; i++) {
dp[i] = min(cost[i], dp[i-1]);
}
for(int i=0; i<N-1; i++) {
ans += energy[i]*dp[i];
}
cout<<ans;
return 0;
}
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 16965 (0) | 2024.07.30 |
---|---|
๋ฐฑ์ค 21870 (0) | 2024.07.30 |
[์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ ] +1 -1 Technique (0) | 2024.07.17 |
๋ฐฑ์ค 1593 (1) | 2024.07.08 |
๋ฐฑ์ค 2482 (0) | 2024.06.26 |