알고리즘/문제 풀이

10809번: 알파벳 찾기

Themion 2021. 12. 30. 16:04

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

각 글자가 나온 위치를 -1로 초기화한 뒤, 각 글자가 발견될 때마다 글자가 나온 위치가 -1일 경우에만 갱신한 뒤 각 글자가 나온 위치를 출력한다.

#include <cstdio>

#define MAX 26

int main() {
    // 단어를 한 글자씩 입력받기 위한 공간
    char c;
    // ans[i]: i + 'a'가 처음 나온 인덱스
    int ans[MAX];

    // ans를 전부 -1로 초기화한 뒤
    for (int i = 0; i < MAX; i++) ans[i] = -1;
    // 단어의 각 글자가 아직 나오지 않았다면 ans에 나온 위치를 표시
    for (int i = 0; scanf("%c", &c) && c != '\n'; i++) 
        if (ans[c - 'a'] == -1) ans[c - 'a'] = i;
    // 각 글자가 나온 위치를 출력
    for (int i = 0; i < MAX; i++) printf("%d%c", ans[i], i == MAX - 1 ? '\n' : ' ');

    return 0;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

10816번: 숫자 카드 2  (0) 2021.12.30
10814번: 나이순 정렬  (0) 2021.12.30
10799번: 쇠막대기  (0) 2021.12.30
10773번: 제로  (0) 2021.12.30
10757번: 큰 수 A + B  (0) 2021.12.30