24.12.16 (월)

2024. 12. 16. 16:01·내배캠/TIL

std::string::replace 함수

처음엔 for문을 통해 뒤에서 5번째 글자부터 첫 번째 글자까지 *로 바꾸었는데, string::replace 함수를 사용하면 더 가독성 있게 쓸 수 있음을 알게 되었다.

 

string& replace(size_t pos, size_t len, size_t n, char c);
  • pos 는 시작 위치를 의미한다.
  • len 은 기존 문자열에서 대체할 글자 수를 의미한다.
  • n 은 새로 삽입할 글자 수를 의미한다.
  • c 는 새로 삽입할 글자를 의미한다.

 

이 밖에도 replace 함수는 다양한 오버로딩을 제공한다.

참조: https://modoocode.com/250

 

 

 

 

 

std::binary_search

처음엔 왼쪽과 같이 find함수를 사용해서 문제를 풀었는데, 더 효율적인 방법이 없을까 생각해보며 잊고 있던 binary_search에 대해 다시 공부하였다.

 bool binary_search(ForwardIterator first, ForwardIterator last, const T& value);

binary_search는 탐색의 시작과 끝의 이터레이터 중, Target Value 값이 존재하는지 bool 으로 반환하는 함수이며 <algorithm>헤더에 포함되어있다.

find 함수의 선형 탐색보다는 binary_search의 이진 탐색이, 찾고자 하는 데이터 테이블이 클수록 더욱 빠르다.

물론 위 문제에서는 vector의 크기가 크지 않기도 하고, binary_search를 하려면 vector의 값이 정렬되어있어야 하기 때문에 효율적이라고 볼 수는 없다.

 

binary_search에 대한 추가 정리: https://dong-grae.tistory.com/31

 

 

그래서 더 효율적인 방법에 대해 생각해보았고 아래와 같다.

#include <string>
#include <vector>
#include <numeric>
using namespace std;

int solution(vector<int> numbers) {
    int answer = 0;
    int RangeSum = (1 + 9) * 9 / 2; // 등차수열의 합
    int NumberSum = accumulate(numbers.begin(), numbers.end(), 0); // vector 값의 총 합
   
    
    return RangeSum - NumberSum;
}

문제에서 numbers의 숫자는 모두 다르다고 명시되어있기 때문에 중복된 숫자는 없다는 것을 의미한다.

그래서 1~9까지의 등차수열의 합에서 numbers vector에 있는 총 합을 빼면, 1~9까지의 숫자 중에 numbers에 없는 값의 합을 구할 수 있게 됨으로 이 방법이 가장 효율적이라고 생각된다.

 

등차수열에 관한 정리: https://dong-grae.tistory.com/27

'내배캠 > TIL' 카테고리의 다른 글

24.12.18 (수)  (0) 2024.12.18
24.12.17 (화)  (2) 2024.12.17
24.12.10 (화)  (1) 2024.12.10
24.12.09 (월)  (0) 2024.12.09
24.12.06 (금)  (0) 2024.12.06
'내배캠/TIL' 카테고리의 다른 글
  • 24.12.18 (수)
  • 24.12.17 (화)
  • 24.12.10 (화)
  • 24.12.09 (월)
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    24.12.16 (월)
    상단으로

    티스토리툴바