기록

99클럽 코테 스터디 4일차 TIL C++ 문자열 : stoi, replace 본문

코딩테스트/cpp

99클럽 코테 스터디 4일차 TIL C++ 문자열 : stoi, replace

youngyin 2024. 11. 1. 00:26

오늘의 학습 키워드

(1) 문제1 : 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=cpp

공부한 내용 본인의 언어로 정리하기

문제1 : 문자열

 

(1) string to int

  • stoi = string to int
  • stof = string to float
  • stol = string to long
  • stod = string to double

(2) string.find(찾을문자열) : 문자열에서 특정 문자 찾기

  • 반환값은 찾는 문자열의 첫번쨰 인덱스 값
  • 값이 없는 경우, string::npos를 리턴한다. (int로 결과를 받으면 -1)

(3) string.replace(시작위치,길이, 치환할문자열)

"1two34" 문자열에서 "two"를 "2"로 바꾼다고 해보자. 이때, "1two34".replace(1, 3, "2")처럼 사용할 수 있다. 결과값("1234")

 

(4) 전체 풀이

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string replaceAll(string orgstr, string oldstr, string newstr){
    string new_s = orgstr;
    int idx = new_s.find(oldstr);
    
    while (idx > -1){
        new_s.replace(idx, oldstr.length(), newstr);
        idx = new_s.find(oldstr);
    }
    
    return new_s;
}

int solution(string s) {
    string new_s = s;
    new_s = replaceAll(new_s, "zero", "0");
    new_s = replaceAll(new_s, "one", "1");
    new_s = replaceAll(new_s, "two", "2");
    new_s = replaceAll(new_s, "three", "3");
    new_s = replaceAll(new_s, "four", "4");
    new_s = replaceAll(new_s, "five", "5");
    new_s = replaceAll(new_s, "six", "6");
    new_s = replaceAll(new_s, "seven", "7");
    new_s = replaceAll(new_s, "eight", "8");
    new_s = replaceAll(new_s, "nine", "9");
    
    return stoi(new_s);
}

오늘의 회고

미들러 문제도 풀고 싶었는데, 오늘은 시간이 안나서 문제를 보지도 못했다. 주말에 못푼 미들러 문제들도 다시 살펴봐야겠다.

Comments