플젝도 플젝이지만, 정말 하루에 꼭 한문제 까진 아니더라도
감각이 무뎌지지 않을 정도로 꾸준히 문제를 푸는 것이 중요할 것 같다.
꼭 코딩테스트를 위한 준비라기보다, 풀이를 통해 사고력을 향상하는데 도움이 된다고 생각한다.
난 JAVA를 좋아했고, 코딩테스트에는 적절하지 못하다고 생각하여 C로 바꿨었으며
그 이후에는 또 C++로 옮기게 되었다.
근데 여전히 아직도 C++ 문자열 split이나 파싱조차 제대로 할 줄 모른다는게 현실이다.
문자열 포매팅, 문자열 합치기, 문자열과 정수 합치기, 문자열 split 등 모두 할 줄 몰라서 애를 먹는다.
자바는 ""+int 하면 string으로 되는데,
이번에 1차원 벡터의 초기화를 처음 알게 되었고
vector<int> v(9, 0); // size가 9인 벡터 0으로 초기화
2차원 벡터의 초기화도 처음 알게 되었다.
vector<vector<int>> v(9, vector<int>(9, 0)) v;
이런 기본적인 것들을 이제야 아는 것이 한심스러운게 맞다.
그리고 stringstream도 처음 알게 되었다. 그걸 이용해서 아래와 같이 split 기능을 구현할 수도 있다.
vector<string> split(string input, char delimiter) {
vector<string> result;
stringstream ss(input);
string tmp;
while (getline(ss, tmp, delimiter)) result.push_back(tmp);
return result;
}
여기서 tmp를 int로 하고 싶으면 stio()나 아래와 같이 해주면 된다.
int t_v;
stringstream x(tmp);
x >> t_v;
또한 자바에서는 string과 int를 합쳐 string을 만들 때, 그냥 str + int 해주면 된다.
근데 이게 C++에서는 안된다.
string str = "price is ";
int value = 100;
str += to_string(value);
이렇게 해주어야 한다.
그리고 sprintf 같은 포매팅을 C++에서 string으로 어떻게 하나 궁금한데,, 그건 찾아봐도 잘 찾아지지가 않는다.
%02d 하면 01 02 03 이렇게 string으로 담고 싶은데...;
아시는분 계시면 답변 부탁드립니당.
https://codecollector.tistory.com/999
'[C++]' 카테고리의 다른 글
C++ 레퍼런스 (&) 분석 (0) | 2023.08.30 |
---|---|
배열과 벡터의 복사 (0) | 2022.10.08 |
[C++] XCODE 특정 파일 제외하고 빌드/컴파일 (0) | 2021.07.05 |
[C++] #pragma once (0) | 2021.07.05 |
[C++] constant 함수 (0) | 2021.07.05 |