๐ ์๊ณ ๋ฆฌ์ฆ/Programmers
[C++/PGS] Lv.3 : ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (ํฌํฌ์ธํฐ/์ค์ฌํ์ฅ)
xxilliant
2025. 4. 25. 11:10
728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/12904#
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ3 ํฐ๋ฆฐ๋๋กฌ ๋ฌธ์
์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ํ์ดํ ์ ์๋ค.
๋ํ์ ์ผ๋ก dp, ํน์ ์ผ์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ ๊ฐ์๋ฐ
๋๋ ํฌํฌ์ธํฐ๋ก ํด๊ฒฐํ๋ค.
์ค์ฌ์์๋ถํฐ ํฌํฌ์ธํฐ๋ฅผ ์์์ผ๋ก ๋ณด๋ด๋ฉด์ ์๋ก ๊ฐ์ด ๊ฐ์์ง ๊ฒ์ฌํ๋๋ฐ,
GPT๊ฐ ์ด๋ฐ ๋ฐฉ์์ ์ค์ฌ ํ์ฅ(Center Expansion) ๊ธฐ๋ฒ์ด๋ผ๊ณ ์๋ ค์ค!!
๋์ ํ์ด
#include <iostream>
#include <string>
using namespace std;
int solution(string s)
{
int answer=1;
int n = s.length();
for(int i=0; i<2*n-1; ++i){
int left = i / 2;
int right = left + (i % 2);
while (left >= 0 && right < n && s[left] == s[right]) {
answer = max(answer, right - left + 1);
left--;
right++;
}
}
return answer;
}
728x90
๋ฐ์ํ