본문 바로가기
코딩테스트/programming_C++

baekjoon #2941_크로아티아 알파벳_c++

by prometedor 2021. 10. 26.
  • vector 와 replace() 이용
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main() {
  vector<string> cro_alpha = { "c=", "c-","dz=","d-","lj","nj","s=","z=" };
  string str;
  cin >> str;
  size_t idx;

  for (size_t i = 0; i< cro_alpha.size(); i++) {
    while (1) {
      idx = str.find(cro_alpha[i]);
      if (idx == string::npos) {
        break;
      }
      str.replace(idx, cro_alpha[i].length(), "0");
    }
  }
  cout << str.length();
}

 

find 함수는 찾는 문자열의 첫 번째 인덱스를 반환함

 -> 찾는 문자열이 없는 경우에는 string::npos를 반환함

 

ex) ljes=njak

  • str
str l j e s = n j a k str.length() = 9
str.replace(idx, cro_alpha[i].length(), "0") 0 e 0 0 a k str.length() = 6

 

  • 처음에 작성한 코드
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main() {
  vector<string> cro_alpha = { "c=", "c-","dz=","d-","lj","nj","s=","z=" };
  string str;
  cin >> str;
  int idx;

  for (size_t i = 0; i< cro_alpha.size(); i++) {
    while (1) {
      idx = str.find(cro_alpha[i]);
      if (idx == string::npos) {
        break;
      }
      str.replace(idx, cro_alpha[i].length(), "0");
    }
  }
  cout << str.length();
}

idx와 string::npos 비교 시 타입이 맞지 않아서 그런듯

 

int타입으로 정의했던 idx를 size_t 타입으로 변경하였더니 warning이 발생하지 않음

'코딩테스트 > programming_C++' 카테고리의 다른 글

baekjoon #1712_손익분기점  (0) 2021.10.27
baekjoon #1316_그룹 단어 체커_c++  (0) 2021.10.27
baekjoon #5622_다이얼_c++  (0) 2021.10.26
baekjoon #2908_상수_c++  (0) 2021.10.26
baekjoon #1152_단어의 개수_c++  (0) 2021.10.26