문제 : www.acmicpc.net/problem/2941
<풀이>
#include <iostream>
using namespace std;
int main()
{
string input;
cin >> input;
int count = input.size();
for (int i = 1; i < input.size(); i++)
{
if (input[i]=='=')
{
if (input[i-1]=='c'|| input[i - 1] == 'z'|| input[i - 1] == 's')
{ count--; }
if ((i>1)&&(input[i - 1] == 'z')&& (input[i - 2] == 'd'))
{ count--; }
}
else if (input[i] == '-')
{
if (input[i - 1] == 'c' || input[i - 1] == 'd' )
{ count--; }
}
else if (input[i] == 'j')
{
if (input[i - 1] == 'n' || input[i - 1] == 'l')
{ count--; }
}
}
printf("%d", count);
return 0;
}
<어떻게 풀었는가?>
먼저 크로아티아 알파벳의 개수를 셀 변수인 count를 최댓값인 input.size()로 설정해놓고
인덱스 1번부터 검사를 시작한다. (어차피 크로아티아 알파벳은 2개 이상이기에 0이 아닌 1부터 시작해도 된다)
문자열의 해당 인덱스 값이 =일경우 그 전 값이 c z s이면 -1을 해주고
전 값은 z 전 전 값은 d일 경우 -1을 더 해준다.
그 다음도 비슷하게 해당 인덱스 값이 -일 경우 c d 이면 -1, j일 경우 n l 이면 -1
이렇게 하면 원래라면 2개 이상으로 계산될 크로아티아 알파벳 값을 하나로 셀 수 있게 된다.
'백준 > C++' 카테고리의 다른 글
[백준/C++] 5622번 다이얼 (0) | 2020.11.07 |
---|---|
[백준/C++] 1316번 그룹 단어 체커 (0) | 2020.11.07 |
[백준/C++] 1193번 분수찾기 (0) | 2020.11.04 |
[백준/C++] 10996번 별 찍기 - 21 (0) | 2020.10.12 |
[백준/C++] 1065번 한수 (0) | 2020.10.09 |
댓글