<답안>
#include <iostream>
using namespace std;
int main() {
int resultArray[26];
for(int i=0; i<26; i++)
resultArray[i] = -1;
int index;
string input;
cin>>input;
for(int i=0; i<input.size(); i++)
{
index = (int)input.at(i)-97;
if(resultArray[index] == -1)
resultArray[index] = i;
}
for(int i=0; i<26; i++)
{
cout<<resultArray[i]<<" ";
}
return 0;
}
<설명>
알파벳의 개수는 26개이다
a : 0 ~ z : 25의 인덱스를 갖는 배열 resultArray[26]을 선언한 뒤 -1로 초기화한다
string 형태의 input에 문자열을 입력받아 저장한다
인덱스 i=0부터 배열의 크기-1까지 증가시키며
문자열의 인덱스에 해당하는 글자를 int형으로 형변환한 뒤 -97을 통해
a : 0 ~ z : 25 사이에 해당되는 인덱스 값을 구하여 index에 저장한다
만약 resultArray[index] 값이 -1인 경우(첫 글자확인인 경우)
resultArray[index] 값을 i 즉, 문자열의 몇번째 글자였는지를 저장한다
최종적으로 인덱스 i=0 ~ i=25까지 돌리며 resultArray[i]를 출력한다
'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글
백준 1157번 (C++) (0) | 2020.08.22 |
---|---|
백준 2675번 (C++) (0) | 2020.08.22 |
백준 11720번 (C++) (0) | 2020.08.22 |
백준 11654번 (C++) (0) | 2020.08.21 |
백준 1065번 (C++) (0) | 2020.08.21 |