-
5주차 - 카카오 문제 ( 문자열 압축문제)old/Algorithm 2020. 7. 6. 23:31728x90
분명히 예전에 시험쳤을때 풀었던 문제인데 어려워서 벌벌떨었던거 같은데, 오늘은 운동 두시간 넘게 하고와서 졸린데 풀어도 풀리는거 보면
코테가 어렵기도 어려운건데, 내가 멍청하기도 했던거같다.
참내~
이번주의 첫문제!!
https://programmers.co.kr/learn/courses/30/lessons/60057
문자열 압축 문제 - 여기서 내가 활용한 함수 substr 함수 하나!!
string 을 다루는 문제는 특히 프로그래머스에 많은데, 이제야 왜 스트링 처리가 중요한지 알것같다. 왜냐하면 웹도 글코 다 문자열기반이기때문이다.
이 문제에서는 문자를 짜르는 것이 중요하다.
문자열.substr(시작위치 , 몇개) 그리고 남은 글자갯수가 몇개보다 작아도 알아서 남은것만 반환해준다..
내코드
#include <string> #include <vector> #include <iostream> using namespace std; int solution(string s) { int answer = 0; int ml = 100000; // substr 함수 for(int piece = 1; piece <= s.size(); piece++){ int c = 1; string prev = s.substr(0, piece); string total = ""; for(int i = piece; i < s.size(); i = i + piece){ string cur = s.substr(i, piece); if(prev != cur){ // total 구하기 if(c == 1){ total += prev; }else{ total += (to_string(c) + prev); } prev = cur; c = 1; }else{ c++; } } if(c == 1){ total += prev; }else{ total += (to_string(c) + prev); } if(ml > total.size()){ ml = total.size(); } } return ml; }
포문으로 문자열을 1개씩 부터, 문자열의 길이만큼씩 짤라보는 것으로 시작한다. (piece)
그리고 첫번째 문자부터 piece길이씩 인덱스를 증가시키면서 앞에것이랑 값이 같은지 비교한다.
이전이랑 같으면 누적값(c)를 1 증가시키고, 다르면 total에 문자를 더해주는데 이때 누적값이 1이면 1은 생략해준다
여튼 졸려서 글을 정리하기가 힘들다.
쉬운 문제였던것같다. 그땐 비록 제대로 못풀었지만 ㅋㅋ
'old > Algorithm' 카테고리의 다른 글
5주차 카카오문제(자물쇠와 열쇠) (0) 2020.07.12 5주차 - 카카오 문제 (괄호변환) (0) 2020.07.12 4주차 6월22일 - 6월28일 (0) 2020.06.22 3주차 6월15일 - 6월21일 (0) 2020.06.13 2주차 6월8일 - 6월14일 (0) 2020.06.07