반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/17684
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제



풀이 및 코드
문제를 잘못 생각해서 너무 꼬아서 생각을 해 시간이 꽤 오래 걸렸던 문제입니다. (사실 굉장히 쉽다고 생각합니다.)
처음 A~Z까지의 문자들을 map에 먼저 insert를 해줍니다 (1부터 26까지)
map을 사용하여 찾는것이 존재하지 않을때에 대해서 map에 insert를 해주고
현재 입력에 대해서 answer에 push_back을 진행해주었습니다.
/*
압축
그냥 계속 가다가 만약에 맵에 존재하지 않으면 그에 대해서
map에는 insert를 하고 맨뒤 문자를 잘라내고 그다음 answer에다 push_back을 한다.
다만 다음글자가 지정된 곳에서 다시 반복문을 시작해야하므로 i--
그리고 보면 마지막 kakao의 o와 tobe~~애서의 ot를 보면 반복문이 끝나고 또 따로 push_back을 해야함
*/
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
vector<int> solution(string msg) {
vector<int> answer;
map<string,int> m;
string s = "";
for(int i = 1 ; i <= 26; i++){
char c = 'A' + (i - 1);
s ="";
s += c;
m.insert({s,i});
}
int idx = 27;
s="";
for(int i = 0; i < msg.length();i++){
s.push_back(msg[i]);
if(m.find(s) == m.end()){
m.insert({s,idx});
idx++;
s.pop_back();
answer.push_back(m[s]);
s="";
i--;
}
}
answer.push_back(m[s]);
return answer;
}
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 더맵게] c++ (풀이,코드, 효율성 해결 과정) (0) | 2023.05.19 |
---|---|
[프로그래머스 n진수 게임] c++ (풀이법, 코드) (0) | 2023.05.19 |
[프로그래머스 k진수에서 소수 개수 구하기] c++ (풀이법,코드) (1) | 2023.05.19 |
[프로그래머스 전화번호 목록] c++ (코드, 풀이, 개념) (0) | 2023.05.17 |
[프로그래머스 타겟넘버] c++ (코드, 풀이, 개념) (0) | 2023.05.17 |
댓글