문제 설명

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자의 위치를 return

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

 

프로그래머스

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

programmers.co.kr

문제 풀이법

이중 for문을 사용하면 간단하게 풀 수 있다

밖의 for문은 문자열의 문자 하나하나씩 반복하는 for문이고, 안의 for문은 처음부터 해당 문자가 있는 곳까지 반복하는 for문이다

if문을 통해 같은 문자가 등장하면 해당 문자들의 인덱스 차를 구한 뒤 answer에 넣어준다

 

 

소스 코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(string s) {
    vector<int> answer;
    
    for(int i = 0; i < s.size(); i++) {
        int find = -1;
        for (int j = 0; j < i; j++) {
            if (s[i] == s[j])
                find = i - j;
        }
        answer.push_back(find);
    }
    return answer;
}
복사했습니다!