문제
풀이 1
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = s.length();
int len = 0, count = 1;
string a, before;
for(int i=1; i<=s.length()/2; i++){
len = 0;
for(int j=0; j<s.length(); j+=i){
a = s.substr(j, i);
len += a.length();
if(before == a){
len -= a.length();
count++;
}
else if(count > 1){
string count_s = to_string(count);
len += count_s.length();
count = 1;
}
before = a;
}
if(count > 1){
string count_s = to_string(count);
len += count_s.length();
count = 1;
}
if(answer > len) answer = len;
}
return answer;
}
정답만을 구하는 것이 목적이었기 때문에(int 값) 정답인 문자열을 구할 수 없었다.
풀이 2
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
string answer = s;
int count = 1;
string a, before;
string ex = "";
for(int i=1; i<=s.length()/2; i++){
before = s.substr(0, i);
for(int j=i; j<s.length(); j+=i){
a = s.substr(j, i);
if(before != a){
if(count > 1) ex += to_string(count);
ex += before;
count = 1;
}
else {
count++;
}
before = a;
}
if(count > 1) ex += to_string(count);
ex += before;
count = 1;
if(answer.size() > ex.size()) answer = ex;
ex = "";
}
return answer.size();
}
다른사람 풀이를 본 후
정답인 문자열을 구해 그 size를 리턴할 수 있도록 수정했다!
다른 사람 코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<string> convert(string s, int n)
{
vector<string> v;
for(int i = 0 ; i <s.length() ; i+=n)
{
v.push_back(s.substr(i,n));
}
return v;
}
int solution(string s) {
int answer = 0;
vector<string> tok;
string before;
int cnt = 1;
int min = s.length();
string str="";
for(int j = 1 ; j <= s.length()/2 ; j++)
{
tok = convert(s,j);
str = "";
before = tok[0];
cnt = 1;
for(int i = 1 ; i < tok.size() ; i++)
{
if(tok[i] == before) cnt++;
else
{
if(cnt != 1) str += to_string(cnt);
str += before;
before = tok[i];
cnt = 1;
}
}
if(cnt != 1)str += to_string(cnt);
str += before;
min = min<str.length() ? min : str.length();
}
cout<<str;
return min;
}
문자열을 단위별로 잘라 벡터에 넣어 문제를 해결했다.
'Algorithm > 카카오기출' 카테고리의 다른 글
[프로그래머스] 카카오프렌즈 컬러링북 / DFS과 BFS, memset (0) | 2022.03.11 |
---|---|
[프로그래머스] 오픈채팅방 / stringstream (0) | 2022.03.10 |
[프로그래머스]신고 결과 받기 / istringstream (0) | 2022.01.24 |
[프로그래머스]다트게임 / stringstream (0) | 2022.01.19 |
[프로그래머스]비밀지도 (0) | 2022.01.15 |