문제설명
알고리즘
1. 알파벳과 그 인덱스를 map 에 저장한다
2. map에서 해당 key를 조회하고 있으면 그 value와 문자열을 순회하는 index값을 빼어 결과값에 저장
3. key가 없는 경우 결과값에 -1 저장, 그리고 map에 key값과 현재 index저장
코드
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
map <char, int> m;
for(int i=0; i< s.size(); i++){
char temp = s[i];
if(m.count(temp)){//해당 알파벳이 있으면
answer.push_back(i-m[temp]); //제일 가까운 위치 구해서 거리 저장
m[temp] = i;//현재 위치 갱신
}
else {//해당 알파벳이 없으면
m.insert({temp,i}); //key 값과 인덱스 기록
answer.push_back(-1);//-1 저장
}
}
return answer;
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 뒤에 있는 큰 수 찾기 (0) | 2023.03.05 |
---|---|
[프로그래머스] 게임 맵 최단거리 (0) | 2023.02.24 |
[프로그래머스] 크기가 작은 부분 문자열 (0) | 2023.02.22 |
[프로그래머스] 귤 고르기 (0) | 2023.02.22 |
[프로그래머스] 명예의 전당(1) (0) | 2023.02.22 |