GitHubSeob

C++ / 프로그래머스 / 가장 가까운 같은 글자 본문

Programmers/Level 1

C++ / 프로그래머스 / 가장 가까운 같은 글자

GitHubSeob 2023. 6. 24.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

알파벳위치를 나타내는 alp벡터를 알파벳 개수인 26의 사이즈로 만든다.

첫 글자라면 해당 값이 초기화된 -1이므로 answer에 -1을 push 한다.

첫 글자가 아니라면 idx에서 알파벳 위치가 저장된 alp을 통해 이전 알파벳 위치를 구하고 뺀  값을 answer에 push 한다.

그다음 현재 알파벳의 위치로 갱신한다.

 

코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(string s) {
    int idx(0);
    vector<int> answer;
    vector<int>alp(26, -1);
    for (idx = 0; idx < s.size(); ++idx) {
        if (alp[s[idx] - 'a'] == -1) {
            answer.push_back(-1);
        }
        else {
            answer.push_back(idx - alp[s[idx] - 'a']);
        }
        alp[s[idx] - 'a'] = idx;
    }
    return answer;
}