
나왔는지 안나왔는지와 한 번 등장했다면,
그 위치로부터 다시 등장한 애의 차이가 얼마나 나는지를 구해야한다.
그래서 등장 여부를 확인하는 용도로는 Map이 좋다고 생각하여 자료구조로 unordered_map을 사용했다.
알파벳 문자를 key값으로, 그 알파벳의 위치(인덱스)를 value로 했다.
만약 이 맵에 없다면 -1을 answer에 넣고,
존재 한다면 앞에 한 번 나온 애의 위치가 저장되어 있으니,
현재 나의 인덱스에서 맵에 저장된 위치를 빼서 간격을 구하여 answer에 넣는다.
그리고나서는 모두 현재 나(알파벳)의 위치 인덱스 값으로 맵을 업데이트시켜주는 방식으로 풀었다.
아래는 코드이다!
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(string s) {
unordered_map<char,int> hMap;
vector<int> answer;
for (int i=0;i<s.size();++i){
if (hMap.find(s[i])==hMap.end()) {
answer.push_back(-1);
}else {
answer.push_back(i-hMap[s[i]]);
}
hMap[s[i]]=i;
}
return answer;
}
'PS > Programmers' 카테고리의 다른 글
| [SQL] SQL NULL값인 컬럼 처리하기 (IFNULL) (0) | 2026.01.07 |
|---|---|
| [프로그래머스/C++] Level1 - 2016년 풀이 (0) | 2025.12.07 |
| [프로그래머스/C++] 알고리즘 고득점 키트 - 베스트앨범 (1) | 2025.07.04 |
| [프로그래머스/C++] 알고리즘 고득점 키트 - 체육복 (0) | 2025.05.21 |
| [프로그래머스/C++] 알고리즘 고득점 키트 - K 번째 수 (0) | 2025.05.20 |