관리 메뉴

공부 기록

백준 2941 크로아티아 알파벳 본문

코딩테스트/[BOJ] 문제 풀이

백준 2941 크로아티아 알파벳

_JAEJAE_ 2021. 6. 29. 21:39

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도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

예제 입력 1 복사

ljes=njak

예제 출력 1 복사

6

예제 입력 2 복사

ddz=z=

예제 출력 2 복사

3

예제 입력 3 복사

nljj

예제 출력 3 복사

3

예제 입력 4 복사

c=c=

예제 출력 4 복사

2

예제 입력 5 복사

dz=ak

예제 출력 5 복사

3


[사용한 함수]

입력받은 문자열의 길이만큼 반복문을 돌려야 하기 때문에 문자열의 길이를 구할 때 사용하는 strlen함수를 사용했다.

- strlen: 문자열의 길이를 반환하는 함수

헤더파일: C <string.h> / C++ <cstring>

using namespace std;

ex. char arr[] = "hello";

      int len = strlen(arr); -> len = 5


[풀이 과정]

1. 문자열의 길이만큼 반복문을 돌리면서 전체 길이를 저장할 cnt변수를 1씩 증가시켜준다.

 

2. 크로아티아 알파벳이 2글자이면 인덱스(i)를 2칸씩 증가시키고 3글자이면 3칸씩 증가시킨다.

 

3. 크로아티아 알파벳에 해당하지 않으면 인덱스를 1만 증가시킨다.

 

4. 글자수를 저장한 변수 cnt를 출력한다.


[소스 코드]

#include <cstdio>
#include <cstring>
using namespace std;

char input[105];

int main(){
  scanf("%s", input);
  
  int len = strlen(input), cnt = 0;
  
  for(int i=0;i<len;){
    cnt++;
    if(input[i] == 'c'){
      if(input[i+1] == '=' || input[i+1] == '-') i += 2;
      else i++;
    }
    else if(input[i] == 'd'){
      if(input[i+1] == 'z' && input[i+2] == '=') i += 3;
      else if(input[i+1] == '-') i += 2;
      else i++;
    }
    else if(input[i] == 'l' && input[i+1] == 'j') i += 2;
    else if(input[i] == 'n' && input[i+1] == 'j') i += 2;
    else if(input[i] == 's' && input[i+1] == '=') i += 2;
    else if(input[i] == 'z' && input[i+1] == '=') i += 2;
    else i++;
  }
  printf("%d\n", cnt);
  return 0;
}

 

https://github.com/chojaehyo/CodingTest/blob/main/%5BBOJ%5D크로아티아%20알파벳

 

chojaehyo/CodingTest

Contribute to chojaehyo/CodingTest development by creating an account on GitHub.

github.com

 

'코딩테스트 > [BOJ] 문제 풀이' 카테고리의 다른 글

백준 4673 셀프 넘버  (0) 2021.06.29
백준 1316 그룹 단어 체커  (0) 2021.06.29
백준 9095 1,2,3 더하기  (0) 2021.06.24
백준 1920 수찾기  (0) 2021.06.22
백준 11098 첼시를 도와줘!  (0) 2021.06.22
Comments