-
5주차 - 카카오 문제 ( 문자열 압축문제)old/Algorithm 2020. 7. 6. 23:31728x90
분명히 예전에 시험쳤을때 풀었던 문제인데 어려워서 벌벌떨었던거 같은데, 오늘은 운동 두시간 넘게 하고와서 졸린데 풀어도 풀리는거 보면
코테가 어렵기도 어려운건데, 내가 멍청하기도 했던거같다.
참내~
이번주의 첫문제!!
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자
programmers.co.kr
문자열 압축 문제 - 여기서 내가 활용한 함수 substr 함수 하나!!
C++ 레퍼런스 - string 의 substr 함수
modoocode.com
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