문제 해결/BaekJoon

[백준] [C++] 10809번 알파벳 찾기

WSLim_97 2023. 1. 13. 21:30
반응형

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net


코드

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

const int ALPHA = 26;

int main()
{
	string input;
	int alphabet[ALPHA] = { };
	cin >> input;
	
	for (int i = 0; i < ALPHA; i++)
		alphabet[i] = -1;

	for (int x = 0; x < input.length(); x++)
	{
		int i = input[x] - 97;
		for (int j = 0; j < ALPHA; j++)
		{
			if (j == i && alphabet[j] == -1)
				alphabet[j] = x;
		}
	}

	for (int i = 0; i < ALPHA; i++)
		cout << alphabet[i] << " ";

	return 0;
}

풀이

소문자 문자열을 입력받아 a ~ z의 알파벳이 입력받은 문자열의 어떤 위치에 위치하는지 구해 그 값을 출력하는 문제이다.

 

소문자 a의 아스키 문자 코드는 97이므로 입력받은 문자열의 문자에 97을 빼면 alphbet 배열의 인덱스 값이 된다.

 

즉, 입력받은 문자에 97을 뺀 값을 alphabet 배열의 인덱스와 비교해 알파벳의 위치를 저장한다.

 

알파벳이 등장한 최초의 위치를 저장하는 것이기에 alphabet 배열의 값이 -1일 때만 저장한다.

반응형