한 줄 요약:
문자열의 ascii코드를 통해 비교한다.
풀이 :
1. 소문자알파벳 단어를 입력받을 문자열을 만든다.
char word[101]; cin >> word;
2. 문자열의 각 알파벳의 위치를 나타낼 정수변수 position을 만들고, 초기값을 -1로 설정한다.
position은 문자열의 ascii 코드가 확인되면 바뀔 것이다.
int position = -1;
3. ascii 97~122 사이에서 반복하는 for문을 작성한다.
해당 ascii code는 'a'~'z'를 가리킨다.
해당 위치의 알파벳이 문자열에 존재할 경우, position의 값을 수정하여 출력할 것이다.for (int ascii = 97; ascii <= 122; ascii++) {}
4. 문자열의 처음부터 끝까지 반복할 for문을 3번 for문 안에 작성한다.
알파벳순의 ascii 값들이 차례대로 모든 문자열의 ascii code값에 비교되도록 만들 것이다.
for (int i = 0; word[i] != 0; i++) {}
5. 문자열의 위치를 뽑아내어 정수로 변환한다.
그러면 해당 문자의 ascii 코드값을 나타낼 수 있다.
문자열의 ascii값이(wordAscii)이 모든 알파벳들의 ascii값과 비교될 것이다.int wordAscii = word[i];
6. 모든 알파벳들의 ascii값을 문자열의 ascii값들과 비교한다.
값이 일치하면, 알파벳의 위치를 나타내는 position의 값을 해당 문자열의 위치값으로 변경한 뒤 출력한다.
(같은 문자가 중복되는 경우를 방지하기 위해 값이 출력되면 break;을 통해 빠져나간다.if (ascii == wordAscii) { position = i; cout << position << " "; break; }
7. 문자열을 비교하는 for문에서 빠져나왔는데도 position이 변경되지 않았다면, position의 값을 -1로 출력한다.
position 값을 출력하면, for문의 다음 반복을 위해 position을 다시 -1로 설정한다.
if (position == -1) { cout << position << " "; } position = -1;
<C++ code>
#include <iostream>
using namespace std;
int main()
{
char word[101];
cin >> word;
int position = -1;
for (int ascii = 97; ascii <= 122; ascii++)
{
for (int i = 0; word[i] != 0; i++)
{
int wordAscii = word[i];
if (ascii == wordAscii)
{
position = i;
cout << position << " ";
break;
}
}
if (position == -1)
{
cout << position << " ";
}
position = -1;
}
}