SW Expert Academy 15230_알파벳 공부 문제풀이 in C++

  1. 문제 URL
  2. 문제 요구사항
  3. 접근 방법
  4. 풀이 순서
  5. 소스코드
  6. 문제 풀이 결과

문제 URL


SWEA : 15230_알파벳 공부

문제 요구사항


  • 영어 알파벳은 라틴 문자 중에서 영어에 쓰이는 문자로 ‘a’에서 ‘z’까지 총 26가지 문자가 있다. 정확한 목록과 순서는 다음과 같다.
  • abcdefghijklmnopqrstuvwxyz
  • 어린 성훈이는 알파벳 공부를 하고 있어서, 몇 개의 알파벳을 적었다.
  • 성훈이가 적은 알파벳을 순서대로 보면서 앞에서부터 몇 개의 알파벳이 순서에 맞게 적혀 있는지 구하는 프로그램을 작성하라.
  • 단, 순서는 a부터 순서대로 일치하는 알파벳 개수를 계산하여야 한다.

[입력]

  • 첫 번째 줄에 테스트 케이스의 수 가 주어진다.
  • 각 테스트 케이스의 첫 번째 줄에는 길이 1이상 26이하인 문자열이 주어진다.
  • 주어지는 문자열은 ‘a’에서 ‘z’까지의 문자로 이루어져 있다.

[출력]

  • 각 테스트 케이스마다 순서에 맞게 적힌 알파벳 개수를 출력한다.

접근 방법


  • 문제에서 주어진 순서의 string 객체의 알파벳을 하나 만든다.
  • test_case마다 입력받은 str을 미리 만들어둔 알파벳과 비교하며 count 한다. 이때, 다르다면 즉시 종료한다.

풀이 순서


  1. TC를 입력받아 해당 TC만큼 for문을 반복한다.
  2. 해당 test_case의 str을 입력받아 정해진 알파벳과 1대1 비교한다. 이때, 다르다면 바로 종료한다.
  3. 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;
}

문제 풀이 결과