문제 해결/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일 때만 저장한다.
반응형