728x90
반응형
문제
프로그래머스 KAKAO 2020 Blind문제이다.
여기에서 나는 c++을 이용하여 작성했으며 for문을 두 번 돌며 문제를 해결하여 O(n^2)으로 해결하였다.
핵심은 substr함수를 얼마나 잘 사용하느냐와 인덱스의 이동을 얼마나 수학적으로 잘 표현할 수 있는가 였다.
처음에 테스트 케이스를 돌릴 때 계속 3개가 틀려서 왜일까 고민했는데
처음에 중복되는 문자의 개수가 1자리 수일 때만을 고려해서 실패한 사례가 존재하는 것이었다.
int solution(string s) {
int m = s.size() / 2;
string temp;
string copy = s;
int si = 1;
int minlength = copy.length();
for (int i = 1; i <= m; i++)
{
temp = s.substr(0, i);
for (int j = i; j <= copy.size(); j += i) {
if (temp == copy.substr(j, i)) {
si++;
}
else {
if (si > 1) {
copy.replace(j - (si * i), (si - 1) * i, to_string(si));
j = j - ((si - 1) * i) + to_string(si).size();
}
si = 1;
temp = copy.substr(j, i);
}
}
cout << "i: " << i << " copy: " << copy << "\n";
if (minlength > copy.length()) minlength = copy.length();
copy = s;
}
cout << "minlength: " << minlength << "\n";
return minlength;
}
따라서 다음 코드와 같이 이동하는 j인덱스를 j = j-(si-1) * i) + to_string(si).size()로 변경해주었더니 정상적으로 돌아갔다. 역시 배열의 인덱스를 다루는 문제는 까다로운 것 같다.
728x90
반응형
'c++ > 알고리즘' 카테고리의 다른 글
[c++]조합 (1) | 2022.05.13 |
---|---|
[c++ DP] 다이나믹 프로그래밍 - 예제 (2) | 2022.05.11 |
[C++] 백준- 1189 컴백홈 (완전탐색 + DFS) (0) | 2022.05.01 |
[C++]완전탐색 (0) | 2022.04.29 |
[c++] 백준- 1436 영화감독 숌 (0) | 2022.04.28 |
댓글