알고리즘

<백준> 10809번 알파벳 찾기

_으량_ 2018. 1. 3. 15:14
반응형

문제


알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.


출처:https://www.acmicpc.net/problem/10809


문제 해결 과정:

- 문자열을 받고 앞에서부터 한 알파벳씩 체크한다

- 알파벳 개수가 총 26개 이므로 크기가 26인 배열을 만들고 0번째는 a이다.

- 문자열에서 받은 알파벳이 처음 나온 알파벳이면 해당 배열에 위치를 넣는다.

- 만약 처음 나온 알파벳이 아니라면 지나간다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<iostream>
#include<string>
using namespace std;
 
int main() {
    int alphabet[26];
    string S;
 
    cin >> S;
 
    fill_n(alphabet, 26-1);
    for (int i = 0; i < S.length(); i++) {
        int place = S.at(i) - 97;
 
        if (alphabet[place] == -1) {
            alphabet[place] = i;
        }
    }
 
    for (int j = 0; j < 26; j++) {
        cout << alphabet[j]<<" ";
    }
    cout << endl;
 
 
    return 0;
}
cs


반응형