yoonyoung
백준 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;
}