๋ฌธ์
๊ธฐ๋ค๋ ์ข ์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ํ ์ค๋ก ์ฐ์ฌ ์๋ค. ์๋ฅผ ๋ค์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ข ์ด์ “ABAACA”๊ฐ ์ฐ์ฌ ์๋ค๊ณ ๊ฐ์ ํ์.
์ด์ ์ด ์ข ์ด๋ฅผ ํ ๋ฒ๋ง ์ ์ ๊ฒ์ด๋ค. ์ข ์ด๋ ์๋ก ์ด์ํ ๋ฌธ์ ์ฌ์ด์์๋ง ์ ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์ข ์ด๋ฅผ 4๋ฒ์งธ ๋ฌธ์์ 5๋ฒ์งธ ๋ฌธ์ ์ฌ์ด์์ ์ ์ ์ ์๋ค.
์ด๋ ์๋ก ๋ง๋ฟ์ ๋ฌธ์ ์ ์ค์์, ์๋ก ๊ฐ์ ๋ฌธ์๊ฐ ๋ง๋ฟ์ ์์ ๊ฐ์๊ฐ ์ด ์ ๊ธฐ์ ์ ์๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด ์์์์ ์ ๊ธฐ์ ์ ์๋ 1์ ์ด ๋๋ค. ํ์ง๋ง ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 3๋ฒ์งธ ๋ฌธ์์ 4๋ฒ์งธ ๋ฌธ์ ์ฌ์ด์์ ์ข ์ด๋ฅผ ์ ์ผ๋ฉด ์ ์๋ 2 ์ ์ด ๋๋ค.
์ด์ ์ฌ๋ฌ๋ถ์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด ๐ ๊ฐ ์ฃผ์ด์ง ๋, ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ ๐๊ฐ์ ๋ตํด์ผ ํ๋ค.
- โ๐ ๐ ๐์ ๐๋ฒ์งธ ๋ฌธ์, (๐+1)๋ฒ์งธ ๋ฌธ์, โฏ, ๐๋ฒ์งธ ๋ฌธ์๊ฐ ์ฐจ๋ก๋๋ก ์ข ์ด์ ์ฐ์ฌ ์์ ๋, ์ข ์ด๋ฅผ ํ ๋ฒ ์ ์ด์ ์ป์ ์ ์๋ ์ต๋์ ์ ์๋ ๋ช ์ ์ธ๊ฐ? : ๋ฌธ์์ด
ํ์ด
๋ฌธ์ ์ฌ์ด์์๋ง ์ ์ ์ ์๋ค๋ ๊ฒ์ ์ด์ ์ ๋์.
1 - 6์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด ์ ์ ์ ์๋ ๊ฒฝ์ฐ๋
1๊ณผ 2 ์ฌ์ด๋ฅผ ์ ์ด์ [1, 2]๋ฅผ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ
2์ 3 ์ฌ์ด๋ฅผ ์ ์ด์ [1, 4]๋ฅผ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ
3๊ณผ 4 ์ฌ์ด๋ฅผ ์ ์ด์ [1, 6]์ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ
4์ 5 ์ฌ์ด๋ฅผ ์ ์ด์ [3, 6]์ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ
์ด๋ ๊ฒ ์์์ ๋ถํฐ 2 * n๊ฐ์ ๋ฌธ์์์ ์์ ๋ฌธ์์ ๋ ๋ฌธ์๊ฐ ๊ฐ์์ง, ๋์ ๋ถํฐ 2*n๊ฐ์ ๋ฌธ์์์ ์์๋ฌธ์์ ๋ ๋ฌธ์๊ฐ ๊ฐ์์ง๋ฅผ ํ๋ณํด ๊ฐ์๋ฅผ ์ธ๋ฉด ๋๋ค.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string s;
int N, Q;
int solve(int l, int r) {
int ans1 = 0, ans2 = 0, ans=0, size_idx = 1;
while((r-l)+1 >= size_idx * 2) {
int l1 = l, r1 = size_idx*2 -1 + l;
while(l1 < r1) {
if(s[r1] == s[l1]) ans1 += 1;
l1 += 1; r1 -= 1;
}
int l2 = r-(size_idx*2-1), r2 = r;
while(l2 < r2) {
if(s[r2] == s[l2]) ans2 += 1;
l2 += 1; r2 -= 1;
}
ans = max(max(ans1, ans2), ans);
ans1 = 0; ans2 = 0;
size_idx += 1;
}
return ans;
}
int main(){
cin>>N>>s>>Q;
for(int i=0; i<Q; i++){
int l, r; cin>>l>>r;
cout<<solve(l-1, r-1)<<'\n';
}
}
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1593 (1) | 2024.07.08 |
---|---|
๋ฐฑ์ค 2482 (0) | 2024.06.26 |
๋ฐฑ์ค 31845 (0) | 2024.06.21 |
๋ฐฑ์ค 2151 (0) | 2024.06.18 |
๋ฐฑ์ค 28325 (0) | 2024.06.13 |