코딩테스트/프로그래머스
[프로그래머스] 가장 가까운 같은 글자 (C++)
Deff_a
2024. 11. 4. 23:27
문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
맵을 이용하여 풀이했다.
처음 탐색한 알파벳이라면 answer에 -1 저장 후, i + 1 값 설정
이미 탐색한 알파벳이라면 얼마나 가까운지 구하고, 해당 위치 + 1 저장
여기서 i + 1을 한 이유
맵의 기본값이 0이기 때문에 i로 저장하게 된다면, i가 0일 때 -1이 중복으로 들어가는 경우가 생겨서 + 1을 저장
#include <string>
#include <vector>
#include <map>
using namespace std;
map <char, int> word;
vector<int> solution(string s) {
vector<int> answer;
for(int i = 0; i < s.length(); i++){
if(word[s[i]] == 0){
answer.push_back(-1);
}
else{
answer.push_back(i + 1 - word[s[i] ]);
}
word[s[i]] = i + 1;
}
return answer;
}