백준 10809번 문제 : 알파벳 찾기

문제 링크 : 백준 10809번 : 알파벳 찾기

이 문제는 10808번을 조금 응용한 문제이다. 일단 이번에는 배열을 0으로 초기화하지 않고 -1로 초기화해야 하는 차이점이 있다. 0이 아닌 다른 수로 배열을 초기화하고자 할 때, c++에서는 다음과 같은 방법이 있다.
std::fill_n(c, 26, -1); c배열을 26크기만큼 -1로 초기화하라는 뜻이다. 그 다음, 문자열에서 처음으로 등장하는 위치를 c배열에 저장해주어야하므로 c배열의 값이 -1이 아닐 때 인덱스 값을 c배열에 저장해주면 된다. 10808번 문제와 마찬가지로 문자열의 알파벳에서 a를 빼준 값이 c배열의 인덱스가 되므로 그대로 i값(문자열의 인덱스)를 저장해주면 해결된다.

#include <iostream>
#include <string>
using namespace std;
int c[26];

int main() {
	string s;
	cin >> s;
	std::fill_n(c, 26, -1);

	for (int i = 0; i < s.size(); i++) {
		if (c[s[i] - 'a'] == -1)
			c[s[i] - 'a'] = i;
	}
	for (int i = 0; i < 26; i++) {
		cout << c[i] << " ";
	}
	cout << endl;
	return 0;
}