안녕하세요! 테크지니어22입니다.
오늘은 프로그래머스 알고리즘 문자열 압축을 풀어보도록 하겠습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 접근]
문자열을 활용한 단순 구현문제입니다.
[풀이 전략]
중복이 되지 않는 경우는 중복개수 1을 추가할 필요가 없다는 부분에 유의하여 구현을 하면 됩니다.
주의할 점은 문자열이 한 개 인경우에는 answer초기값이 출력되기 때문에 이에 대한 예외처리가 필요합니다.
[코드]
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
using namespace std;
int solution(string s) {
int answer = 1001;
if(s.length() == 1) return 1 ;
for(int i = 1 ; i <= (s.length() / 2) ; i++) {
string prevStr = s.substr(0, i);
int cnt = 1 ;
string compressed = "";
for(int j = i ; j < s.length() ; j+=i) {
string tmpStr = s.substr(j, i);
if(prevStr != tmpStr) {
compressed += (cnt > 1) ? to_string(cnt) + prevStr : prevStr;
prevStr = tmpStr;
cnt = 1 ;
} else {
cnt++;
}
}
compressed += (cnt > 1) ? to_string(cnt) + prevStr : prevStr;
if(compressed.length() < answer) answer = compressed.length() ;
}
return answer;
}
[배울 점]
- 문제를 정확히 이해하는데 시간 할애하기
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 알고리즘 - 표현 가능한 이진 트리. (0) | 2024.10.03 |
---|---|
[프로그래머스/C++] 알고리즘 - 오픈 채팅방 (0) | 2024.07.14 |
[프로그래머스/C++] 알고리즘 - 괄호 변환 (0) | 2024.05.26 |
[프로그래머스/C++] 알고리즘 - 메뉴 리뉴얼 (0) | 2024.05.25 |
[프로그래머스/C++] 알고리즘 - 주차 요금 계산 (0) | 2024.05.23 |