아직은 파이썬 했던 습관이 남아있는가보다
처음에 문제 보고 든 생각은
크로아티아 알파벳이 들어있는 배열을 만든다음에
입력받은 문자 안에 크로아티아 알파벳이 있는지 찾고,
맞으면 ++하고 그 문자를 삭제한 다음에 삭제되고 남은 문자열의 길이를 더하는 것
근데 c++에서 파이썬 처럼 그런 방식이 가능한지 찾아봐야했고,,
string, algorithm 함수에서 find 가 가능하다는 것을 알게됐다!
그래서 이왕 하는김에
find로 원하는 것을 찾고, 그거를 그냥 특수문자 하나로 바꿔버린다음
바뀌고 난 후의 문자열 길이를 출력하면 그게 더 간단하지 않을까?
include <iostream>
#include <string>
using namespace std;
int main(){
string word;
string alpa[8] = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
cin >> word;
for(int i =0; i<8; i++) word.replace(word.find(alpa[i]), (alpa[i]).length(), "#");
cout << word.length();
}
1트
런타임 에러가 떴다
아무래도 문자길이가 길거나 하면 찾기 힘들거같기도 하고,,
방금 그걸 몇번씩이나 더 반복해야되는거니까
다시 수정
#include <iostream>
#include <string>
using namespace std;
int main(){
string word;
string alpa[8] = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
cin >> word;
for(int i =0; i<8; i++) {
while(1){
if(word.find(alpa[i]) != -1){
// 만약에 find 돌려서 내가 원하는 문자가 없는 것이 아니라면 다음을 실행해라
word.replace(word.find(alpa[i]), alpa[i].length(), "#");
//relace(바꾸고 싶은거, 바꿀 문자 길이, 뭐로 바꿀래)
} else break; //아니면 루프 탈출하고 다음 i로 넘어가기~
}
}
cout << word.length();
}
while(1) 은 while(true)랑 동일
내가 break를 해서 빠져나가야하는 반복문이다
'C++ 문제풀기 > 백준-프로그래머스' 카테고리의 다른 글
| 프로그래머스 | 택배상자꺼내기 (2) | 2025.06.19 |
|---|---|
| 프로그래머스 | 키패드 누르기 (0) | 2025.06.19 |
| 프로그래머스 | 나선형으로 배열하기 (0) | 2025.06.17 |
| 백준 | 1316. 그룹 단어 체커 (0) | 2025.06.17 |
| 백준 | 2606. 바이러스 (DFS) (1) | 2025.06.15 |

