문제 URL:
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
다음 문제는 알파벳 소문자로만 이루어진 단어 S가 주어지면,
각각의 알파벳에 대해서 단어에 포함되어 있는 경우에는 처음 등장하는 위치를,
포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하는 문제이다.
이 문제를 풀기 위해 먼저 'a'에 해당하는 아스키코드를 찾은 뒤 변수 asc에 입력해놓고,
asc를 문자형 변수 al에 다시 대입해주었다.
이 과정을 거치면 변수 al에는 알파벳 'a'가 존재하게 된다.
그 다음으로는 find() 함수를 사용하여 사용자가 입력한 string값에
변수 al(즉, 알파벳 'a')이 존재하면 그 위치를 반환하게 코드를 작성해주었다.
여기서 만약 입력한 string값에 변수 al이 존재하지 않는다면,
s.find(al)==string::npos (not a position을 의미, s는 string변수)
가 되므로 조건문을 사용하여 s.find(al)!=string::npos일때만 위치를 반환하고 아니라면 -1을 출력하게 해주었다.
a부터 z까지 총 26개가 화면에 출력되야 하므로 위 과정을 asc를 1씩 증가시키며 반복해주면 원하는 출력 결과가 나오게 된다.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
int asc = 97;
for(int i=0; i<26; i++)
{
char al = asc;
if(s.find(al)!=string::npos)
cout << s.find(al) << " ";
else
cout << -1 << " ";
asc++;
}
}