알고리즘/백준(BOJ)

백준 10809 알파벳 찾기

오뚜깅 2021. 1. 28. 00:26
반응형

백준 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;
}
반응형