백준/단계별

[C++] 백준 2941

loasd 2022. 12. 17. 00:43
반응형

백준 2941번 문제 크로아티아 알파벳이다.

 

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net


 < 문제 >

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳 변경
č c=
ć c-
dz=
đ d=
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

 

 < 예제 >

 

문제는 간단하다.

크로아티아 알파벳으로 입력했을 때 입력된 문자가 1개인 것으로 계산해서 입력된 문자가 몇개인지 확인하는 것이다.

ljes=njak는 lj / e / s= / nj / a / k 이렇게 6개의 문자로 구성되어 6이라는 출력을 하는 것이다.

 

그렇다면 코드를 보도록 하자

#include <iostream>
#include <string>
using namespace std;

int main() {

	string str;
	cin >> str;

	int count = 0;
	for (int i = 0; i < str.length(); i++) {
		if (str[i] == 'c' && str[i + 1] == '=') {
			count++;
			i += 1;
		}
		else if (str[i] == 'c' && str[i + 1] == '-') {
			count++;
			i += 1;
		}
		else if (str[i] == 'd' && str[i + 1] == 'z' && str[i + 2] == '=') {
			count++;
			i += 2;
		}
		else if (str[i] == 'd' && str[i + 1] == '-') {
			count++;
			i += 1;
		}
		else if (str[i] == 'l' && str[i + 1] == 'j') {
			count++;
			i += 1;
		}
		else if (str[i] == 'n' && str[i + 1] == 'j') {
			count++;
			i += 1;
		}
		else if (str[i] == 's' && str[i + 1] == '=') {
			count++;
			i += 1;
		}
		else if (str[i] == 'z' && str[i + 1] == '=') {
			count++;
			i += 1;
		}
		else
			count++;
	}
	cout << count;
}

else if 문을 사용하였다.

for문을 이용하여 입력된 문자열을 훑어볼 때 특정 단어 후 다음 단어가 크로아티아 알파벳과 일치하는 단어일 경우

그러니까 c 다음 =가 나와서 c=로 크로아티아 알파벳이 완성될 경우 i를 1 증가시켜 =는 탐색하지 못하게 한 후 1을 증가시키는 것이다.

(for문을 돌면 i++가 되어 i+=1을 하면 다음 문자를 건너뛰고 계산하는 것이다.)

그 외에는 평범한 알파벳이므로 count++ 해서 단어의 수를 센 것이다.

 

반응형

'백준 > 단계별' 카테고리의 다른 글

[C++] 백준 1712  (0) 2022.12.19
[C++] 백준 1316  (1) 2022.12.17
[C++] 백준 5622  (0) 2022.12.17
[C++] 백준 2908  (0) 2022.12.17
[C++] 백준 1152  (0) 2022.12.16