파이썬이었으면 굉장히 쉬웠을,, 문제같지만
cpp에서는 파이썬의 find가 있나?? 하는 의문이 들었는데
있었다!
algorithim헤더를 사용하면 됐다
string 자체에 find 함수가 있었다,,,, 생고생 하지말고
파이썬 처럼 index메서드를 사용하면 된다ㅎㅎ
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<char> alphaArr;
vector<int> result;
result.assign(26, -1);
for (int i = 0; i < 26; i++) {
alphaArr.push_back('a' + i);
}
string str;
cin >> str;
for (int i = 0; i < 26; i++) {
auto charIndex = find(str.begin(), str.end(), alphaArr[i]);
if (charIndex == str.end()) {
continue;
}
else {
result[i] = charIndex - str.begin();//인덱스값
//cout << alphaArr[i] << "는 존재하며 위치는 " << result[i] << "입니다." << endl;
}
}
for (int i = 0; i < 26; i++) {
cout << result[i] << " ";
}
}
벡터 자료구조는 자동으로 메모리가 할당되는 배열로서, 데이터를 할당하거나 제거하기 유용하다.
result.assign(26, -1);
-1로 26개 할당
alphaArr.push_back('a' + i);
벡터에 값 append
auto charIndex = find(str.begin(), str.end(), alphaArr[i]);
string의 처음부터 끝까지 있는 alphaArr[i] 값을 찾아서 iterator(반복자) 반환
result[i] = charIndex - str.begin();
반복자를 정수형의 인덱스 값으로 반환하기 위해 string의 begin()함수 사용