SW Expert Academy 15230_알파벳 공부 문제풀이 in C++
문제 URL
문제 요구사항
- 영어 알파벳은 라틴 문자 중에서 영어에 쓰이는 문자로 ‘a’에서 ‘z’까지 총 26가지 문자가 있다. 정확한 목록과 순서는 다음과 같다.
- abcdefghijklmnopqrstuvwxyz
- 어린 성훈이는 알파벳 공부를 하고 있어서, 몇 개의 알파벳을 적었다.
- 성훈이가 적은 알파벳을 순서대로 보면서 앞에서부터 몇 개의 알파벳이 순서에 맞게 적혀 있는지 구하는 프로그램을 작성하라.
- 단, 순서는 a부터 순서대로 일치하는 알파벳 개수를 계산하여야 한다.
[입력]
- 첫 번째 줄에 테스트 케이스의 수 가 주어진다.
- 각 테스트 케이스의 첫 번째 줄에는 길이 1이상 26이하인 문자열이 주어진다.
- 주어지는 문자열은 ‘a’에서 ‘z’까지의 문자로 이루어져 있다.
[출력]
- 각 테스트 케이스마다 순서에 맞게 적힌 알파벳 개수를 출력한다.
접근 방법
- 문제에서 주어진 순서의 string 객체의 알파벳을 하나 만든다.
- test_case마다 입력받은 str을 미리 만들어둔 알파벳과 비교하며 count 한다. 이때, 다르다면 즉시 종료한다.
풀이 순서
- TC를 입력받아 해당 TC만큼 for문을 반복한다.
- 해당 test_case의 str을 입력받아 정해진 알파벳과 1대1 비교한다. 이때, 다르다면 바로 종료한다.
- count 출력
소스코드
#include <iostream>
#include <cstring>
using namespace std;
string alphabet = "abcdefghijklmnopqrstuvwxyz";
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int TC;
cin >> TC;
for (int test_case = 1; test_case <= TC; test_case++) {
string str;
cin >> str;
int res = 0;
for (int i = 0; i < 26; i++) {
if (alphabet[i] == str[i]) {
res++;
}
else
break;
}
cout << "#" << test_case << " " << res << "\n";
}
return 0;
}