Deff_Dev

[프로그래머스] 가장 가까운 같은 글자 (C++) 본문

코딩테스트/프로그래머스

[프로그래머스] 가장 가까운 같은 글자 (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;
}