◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이

[백준 / BOJ] 2941번 크로아티아 알파벳 (C++, Python)

Reo 2022. 1. 17. 14:39
반응형

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

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net


문제


문제 풀이

처음에는 아무 다른 알파벳도 들어가도 되나 싶어서 푸는 데 조금 오래 걸렸던 문제이다. 

 

C++ 상세 풀이

더보기

우선 find함수를 쓰기 위해 vector을 선언해 안에 크로아티아 알파벳들을 넣어준다. 그 후, 크로아티아 알파벳이 없을때 까지 반복한다.

크로아티아 알파벳을 찾는다면 느낌표로 변경해서 출력 조건인 알파벳 갯수를 좀 더 쉽게 알수 있도록 한다.

 

vector<string> arr = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};

for (int i = 0; i < len; i++) {
    while (true) {
        val = str.find(arr[i]);
        if (val == string::npos)
            break;

        str.replace(val, arr[i].length(), "!");
    }
}

cout << str.length();

 

여기서 string:npos는 해당 글을 참고하면 좋을 듯하다.

 

Python 상세 풀이

더보기

replace 메서드를 사용해 쉽게 해결이 가능하다.

 

arr = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]

text = input()

for i in text:
    text = text.replace(i, "!")

 

 

코드 전문

C++

 

Python

 

소감

 

 

반응형