백준 10809번: 알파벳 찾기 / C++ 문제풀이

Been·2023년 11월 13일
0

백준

목록 보기
15/23
post-thumbnail

한 줄 요약:

문자열의 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;
	}

}
profile
콧콧코코콧코콧ㅅ

0개의 댓글