본문 바로가기

Coding/백준 온라인 저지 (Baekjoon Online Judge)

백준 온라인 저지 (Baekjoon Online Judge) - 10809번 : 알파벳 찾기

https://acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

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

www.acmicpc.net

각 알파벳을 표현하는 alpha 배열을 선언 후, 모두 -1로 초기화 시켜준다.

 

문자열을 입력 받은 후에,

문자별로 하나씩 a부터 z까지 각 문자와 같은지 비교를 하고,

만약 같은 경우이고, 그 이전에 값이 설정되지 않은 경우에

(발견되는 첫 번째 인덱스를 찾아야 하기 때문에)

현재의 인덱스 값을 alpha 배열의 원소에 대입해주면 된다.

 

코드는 아래와 같다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	string s;
	cin >> s;

	int num;

	int alpha[26];

	for (int i = 0; i < 26; i++)
		alpha[i] = -1;

	for (int i = 0; i < s.length(); i++) {
		for (char ch = 'a'; ch <= 'z'; ch++) {
			if (s[i] == ch) {
				if (alpha[ch-97] == -1)
					alpha[ch - 97] = i;
			}
		}
	}

	for (int i = 0; i < 26; i++)
		cout << alpha[i] << ' ';
}