백준/백준 단계별 문제풀이

백준 10809번 (C++)

FDEE 2020. 8. 22. 15:46

www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

<답안>

#include <iostream>

using namespace std;

int main() {

    int resultArray[26];

    for(int i=0; i<26; i++)

        resultArray[i] = -1;

    int index;

    string input;

    cin>>input;

    for(int i=0; i<input.size(); i++)

    {

        index = (int)input.at(i)-97;

        if(resultArray[index] == -1)

            resultArray[index] = i;

    }

    for(int i=0; i<26; i++)

    {

        cout<<resultArray[i]<<" ";

    }

    

    return 0;

}

 

<설명>

알파벳의 개수는 26개이다

a : 0 ~ z : 25의 인덱스를 갖는 배열 resultArray[26]을 선언한 뒤 -1로 초기화한다

string 형태의 input에 문자열을 입력받아 저장한다

인덱스 i=0부터 배열의 크기-1까지 증가시키며

문자열의 인덱스에 해당하는 글자를 int형으로 형변환한 뒤 -97을 통해

a : 0 ~ z : 25 사이에 해당되는 인덱스 값을 구하여 index에 저장한다

만약 resultArray[index] 값이 -1인 경우(첫 글자확인인 경우)

   resultArray[index] 값을 i 즉, 문자열의 몇번째 글자였는지를 저장한다

최종적으로 인덱스 i=0 ~ i=25까지 돌리며 resultArray[i]를 출력한다

 

'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글

백준 1157번 (C++)  (0) 2020.08.22
백준 2675번 (C++)  (0) 2020.08.22
백준 11720번 (C++)  (0) 2020.08.22
백준 11654번 (C++)  (0) 2020.08.21
백준 1065번 (C++)  (0) 2020.08.21