코딩하는 덕구 🐶

49. C++ 백준 2941 번 크로아티아 알파벳 본문

알고리즘 문제 풀이

49. C++ 백준 2941 번 크로아티아 알파벳

코딩하는 덕구 🐶 2022. 1. 27. 17:43
728x90

안녕하세요! 코딩하는 덕구입니다!

크로아티아 알파벳의 개수를 세는 문제인 C++ 백준 2941 번 입니다~!

문제

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

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

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

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

입력

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

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

출력

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

https://www.acmicpc.net/step/7

 

문자열 단계

정수를 문자열로 입력받는 문제. Python처럼 정수 크기에 제한이 없다면 상관 없으나, 예제 3은 일반적인 정수 자료형에 담기에 너무 크다는 점에 주목합시다.

www.acmicpc.net

 

#include <iostream>
#include <string>
using namespace std;
int main(){
    int cnt = 0;
    string word;
    cin>>word;
    cnt = word.length();
    for(int i = 0; i< word.length(); i++){
        if(word[i] == '-'|| word[i] == '=')
            cnt--;
        
        if(word[i] == '=' && word[i-1] == 'z')
            if(word[i - 2] == 'd')
                cnt--;

            if(word[i] == 'j')
                if(word[i-1] == 'l' || word[i-1] == 'n' )
                    cnt--;
    }
        cout<<cnt;
    return 0;
}

경우의 수를 많이 생각했습니다!

맨 처음 cnt의 크기를 글자의 개수로 지정하고!

첫 번째 if 문에서 '-' 나 '=' 가 나오면 그 앞글자와 결합해서 크로아티아 알파벳 1글자가 되므로

cnt에서 한개씩 빼주었습니다!

 

두 번째 if 문 여기서 dz= 는 크로아티아 알파벳으로 한글자 이므로 맨 처음 조건대로 1만 빼주면

3 - 1 는 2니깐 1글자가 남죠! 그래서 1을 또 빼줬습니다!

 

마지막으로 글자 j가 나오고, 바로 앞 글자가 n이나 l이 나오면 2글자 알파벳이 1글자 크로아티아 알파벳이 되므로

cnt -1을 해주면 끝!

 

제가 운영하는 오픈 카톡방입니다. 알고리즘, 코딩, 취업정보 등 자유롭게 질문, 답변 및 대화 나눠요.

https://open.kakao.com/o/guGhqGAg

 

알고리즘, 코딩, 개발자 취업 질문방 (비번 4321)

#코딩 #개발자 #알고리즘 #코테 #코딩테스트 #질문 #개발직군취업 #SW #SW취업

open.kakao.com

 

 

C++ 2941 번 이었습니다! 감사합니다~!

728x90