티스토리 뷰

728x90
반응형

첫날이라 C++에 미숙하고 오랜만에 알고리즘 문제를 접해서 한참 애먹었다. 태그가 해시 문제였는데 해시로 푸는 것은 실패했다. 혼자 알고리즘 책 펼쳐 놓고 무한 삽질 .. 다른 사람들 코드를 보니 안 해도 됐던 것 같지만 split도 쉽지 않았다. 문자열 문제에 필수로 등장한다고 하니 외워둬야 할 것 같다.

 

vector <string> split(string s, string divide) {
    vector<string>v;
    char* context = NULL;
    //char* c = strtok_r((char*)s.c_str(), divide.c_str(),&context);
    char* c = strtok((char*)s.c_str(), divide.c_str());
    while (c) {
        v.push_back(c);
        //c = strtok_r(NULL, divide.c_str(),&context);
        c = strtok(NULL, divide.c_str());

    }
    
    return v;
}

 

strtok_s, strtok은 programmers에서는 돌아가지 않아 strtok_r을 사용해줘야 했다.

strtok함수는 string을 토큰화 하는 함수이다. 분리된 문자열의 첫번쨰 주소를 리턴한다. (ex. I go 이면 g의 주소)

함수의 원형은 char *strtok_s(char *_String, const char *_Delimit, char **_Context);

c_str 은 string 형으로 변환.(반환형이 char*)

참고로 atoi는 문자열을 int로 리턴

[참고주소]

c++ string c_str 함수 : string을 char *로 바꿔봅시다. (tistory.com)

 

[전체코드]

 

오늘은 하도 삽질을 많이 해서 .. 내일 hash로 다시 풀어보는걸로 .. 우선 c++ hash 관련해서 먼저 공부해야 겠다.. 

Day1 끝!!!

 

[Day2] 

 

hash로 푼 것.. 다른 사람 코드를 거의 참고해서 풀었다.

처음에 map에 insert할 때 동명이인 예외처리를 안하면 다른 테스트에서 틀렸다고 나온다. 예외처리 필수! unordered_map 사용법 익히기.. 

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함