본문 바로가기

PS/BOJ

[C++] BOJ (백준) 10809 : 알파벳 찾기

문제

10809번: 알파벳 찾기 (acmicpc.net)

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

코드
#include <iostream>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    string s;
    cin >> s;

    int arr[26];
    fill_n(arr, 26, -1);

    for (int i = 0; i < s.size(); i++) {
        int idx = s[i] - 'a';
        if (arr[idx] == -1) arr[idx] = i;
    }

    for (int i : arr) {
        cout << i << ' ';
    }
    return 0;
}

 

설명

std::fill_n(first, size, value) 함수로 arr 배열을 -1로 채운다.
배열의 각 값은 a의 위치, b의 위치... 를 의미하기 때문에 s[i] - 'a'로 idx의 값을 구하고,
arr[idx] 에 각 알파벳이 처음 등장하는 위치를 저장한다.