쌓고 쌓다
[프로그래머스] 가장 가까운 같은 글자 C++ 풀이 및 해설 본문
https://school.programmers.co.kr/learn/courses/30/lessons/142086?language=cpp
풀이 방법
Map을 사용한다.
문자열 s를 탐색하며 처음 나온 문자라면
Map에 해당 문자와 인덱스를 저장한다.
그리고 answer에 -1을 넣는다.
이미 존재하는 문자라면
현재 인덱스 i에서 해당 문자의 가장 최근의 위치인 m[s[i]]를 빼서 몇번째 앞에 있는지 계산한다. 그 값을 answer에 push
그리고 Map에 저장된 해당 문자의 가장 최근 위치를 갱신해준다.
전체 코드
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
map<char, int> m;
for(int i=0; i<s.length(); i++) {
// 첫 글자라면
if(m.find(s[i])==m.end()) {
answer.push_back(-1);
m.insert({s[i], i});
} else {
answer.push_back(i-m[s[i]]); // 현재 문자의 위치 i에서 앞서 나타난 해당 문자의 위치를 빼면 두 문자 사이의 거리
m[s[i]]=i; // 현재 문자의 위치를 최신화
}
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 C++ 풀이 및 해설 (0) | 2023.10.28 |
---|---|
[프로그래머스] 푸드 파이트 대회 C++ 풀이 및 해설 (1) | 2023.10.21 |
[프로그래머스] 삼총사 C++ 풀이 및 해설 (0) | 2023.10.02 |
[프로그래머스] 크기가 작은 부분 문자열 C++ 풀이 및 해설 (0) | 2023.09.23 |
[프로그래머스] 시소 짝꿍 C++ 풀이 및 해설 (0) | 2023.09.22 |
Comments