C++ - String to Int/ Int to String
BOJ 5430 문제 풀이
Reverse 함수 구현
컨테이너 내부 원소를 reverse 하라는 명령이 들어온다고 진짜로 배열의 모든 원소를 뒤집으면 절대로 안 됩니다.
N개의 원소의 순서를 정말로 바꾸면 당연히 그 원소 수만큼 시간이 걸리고, 그걸 최대 10만 번 수행해야 하니 테스트 케이스 1개만으로도 100억번의 연산이 수행됩니다.
Reverse 명령의 핵심은 실제로 원소를 뒤집지 않고도 뒤집힌 것과 같은 효과를 내도록 구현하는 것입니다.
C++의 std::reverse(), Python의 a[::-1] 역시 사용해서는 안 됩니다.
if(order == 'R')
isReverse = !isReverse;
if(!isReverse) {
cout << "[";
while(dq.size() > 1) {
cout << dq.front() << ",";
dq.pop_front();
}
cout << dq.front() << "]\n";
}
else {
cout << "[";
while(dq.size() > 1) {
cout << dq.back() << ",";
dq.pop_back();
}
cout << dq.back() << "]\n";
}
DEQUE 의 front(), back() 함수를 통해서 reverse flag bool type에 따라서 deque 에서 연산을 front()로하거나 back()으로 원소에 접근
String to Int
string arr;
cin >> arr;
int x = 0;
for(int i =0 ; i <arr.size(); i++) {
if(arr[i] == '[')
continue;
else if('0' <= arr[i] && '9' >= arr[i]) {
x = x*10 + (int)(arr[i]-'0');
}
else if(arr[i] == ',' || arr[i] == ']'){
if(x > 0)
dq.push_back(x);
x = 0;
}
}
- int value = (int) c - ‘0’;
- c 데이터가 char 타입일때 int로 강제형변환 하여 ‘0’ 을 빼주면 c에 해당하는 int 값을 구할 수 있다.
const char *str2 = "3.14159";
int num2 = std::atoi(str2);
std::string str1 = "45";
int myint1 = std::stoi(str1);
-
atoi() : char형 문자열을 정수형태로 변환
-
stoi() : string 데이터타입의 문자열을 정수형으로 변환
Int to String
- to_string()
double f = 23.43;
std::string f_str = std::to_string(f);