-
[프로그래머스] 문자열 압축알고리즘/프로그래머스 2021. 7. 12. 22:10
문자열을 잘 자르기만 하면 됩니다. 하나씩 자를 때는 하나씩 비교하면 되고 두 개씩 자를 때는 두 칸씩 이동하면서 비교해야 합니다. 문자열의 길이가 8인데 자르는 갯수가 3일 때는 나누어 떨어지지 않습니다. 이럴 때는 나머지를 꼭 뒤에 붙여줘야 하겠습니다. string의 += 연산자는 append()를 감싸는 형태입니다.
코드
#include <string> #include <vector> using namespace std; int min(int a, int b) { return a < b ? a : b; } int solution(string s) { int answer = s.size(); for (int i = 1; i <= s.size() / 2; ++i) { string sub = s.substr(0, i); string str = ""; int count = 1; for (int j = i; j <= s.size(); j += i) { if (sub == s.substr(j, i)) ++count; else { if (count > 1) { str += to_string(count); count = 1; } str.append(sub); sub = s.substr(j, i); } } if (s.size() % i != 0) str += sub; answer = min(answer, str.size()); } return answer; }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 프린터 (0) 2021.07.19 [프로그래머스] 오픈 채팅방 (0) 2021.07.19 [프로그래머스] 가장 큰 정사각형 찾기 (0) 2021.07.11 [프로그래머스] 스킬트리 (0) 2021.07.09 [프로그래머스] 가장 큰 수 (0) 2021.07.06