벡터: 리스트처럼 배열쓰기(1080)

이영준·2022년 4월 4일
0

파이썬이었으면 굉장히 쉬웠을,, 문제같지만
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()함수 사용

profile
컴퓨터와 교육 그사이 어딘가

0개의 댓글