https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
완전탐색을 사용해서 풀이한다.
1. 압축 문자열을 저장하기 위한 a변수와 i개의 검사 문자열을 저장하기 위한 tmp변수를 선언한다.
2. i개의 검사할 문자열을 제어한다.
3. 다음 i개의 문자열에 대해 기존(tmp)와 같다면 cnt 변수 ++, 아니라면 cnt를 a 변수에 더해주고 문자열을 더해준다. 이때, j+=i이다.
4. 새로운 검사할 문자열을 지정하고 cnt변수 초기화 한다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string s) {
int answer = 2147000;
// 검사 길이
string str;
for (int i=1; i<=s.size(); i++){
string a="";
string tmp=s.substr(0, i);
int cnt=1;
for (int j=i; j<s.size(); j+=i){
if (tmp == s.substr(j, i))
cnt++;
else{
if (cnt != 1)
a += to_string(cnt);
a+=tmp;
tmp=s.substr(j, i);
cnt=1;
}
}
if (cnt>1) a+= to_string(cnt);
a+=tmp;
if (answer > a.size())
answer = a.size();
}
return answer;
}
'프로그래머스 > Lv.2' 카테고리의 다른 글
[C++] 프로그래머스 괄호 회전하기 (0) | 2023.02.21 |
---|---|
[C++] 프로그래머스 JadenCase 문자열 만들기 (0) | 2023.02.20 |
[C++] 프로그래머스 거리두기 확인하기 - BFS (0) | 2023.02.14 |
[C++] 프로그래머스 숫자 블록 (0) | 2023.02.13 |
[C++] 프로그래머스 단체사진 찍기 (0) | 2023.02.08 |