반응형
백준 10809 알파벳 찾기 문제는 아래와 같다.
```
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
```
나의 접근은 ascii code값으로 하였다. 소문자 a는 ascii code 10진수 값으로 97이다.
먼저 alphabet 개수만큼의 사이즈로 1차원 배열을 생성하고, fill_n(arr, size, value) 함수를 이용하여 -1로 초기화하였다. fill_n 함수는 같은 값으로 배열 초기화하기 좋은 함수이다.
그리고 string s 에서 한 단어 한 단어를 97과 빼주면 몇 번째 알파벳인지를 알 수 있다. 여기서 구한 값에 해당하는 alphabet 배열의 위치에 string s의 인덱스 값을 넣어주면 해결된다.
#include <iostream>
using namespace std;
int main(){
string s;
cin >> s;
int alphabet[26];
fill_n(alphabet, 26, -1);
// ASCII Code 'a'의 10진수는 97이다.
for(int i = 0; i < s.size(); i++){
if(alphabet[s[i] - 97] == -1)
alphabet[s[i] - 97] = i;
}
for(int i = 0; i < 26; i++)
cout << alphabet[i] << " ";
return 0;
}
반응형
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 1157 단어공부 (0) | 2021.01.28 |
---|---|
백준 2675 문자열 반복 (0) | 2021.01.28 |
백준 1065 한수 (0) | 2021.01.27 |
백준 10773 스택 (0) | 2021.01.27 |
백준 4673 셀프 넘버 (0) | 2021.01.27 |