[해당 문제는 266가지 문제로 정복하는 코딩 인터뷰]
책의 내용의 문제와 풀이를 베이스로 공부하는 내용이다.
문제를 풀기전에 단순하게 문제를 푸는것이 목적이 아닌
시간복잡도와 공간복잡도의 관계를 계산하며,
자료구조의 이해도와 실력을 향상하는데 목적이 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include "Q6.h"
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec)
{
os << "[";
for (size_t i = 0; i < vec.size(); i++)
{
os << vec[i];
if (i != vec.size() - 1)
{
os << ", ";
}
}
os << "]";
return os;
}
|
cs |
|
// main에서 vector 형태로 출력하기위한 기본 셋팅
|
Q 6.1 문자열과 정수 상호 전환하기
stoi를 사용하지 않고 정수를 문자열로 변환하는 함수와 문자열을 정수로 변환하는 함수를 작성하라.
ex) <int>314 의 return 은 <string>"314"반대의 경우도 되야함.
해당 문제의 소스코드와 결과는 다음과 같다.
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
|
// 6.1 문자열과 정수 상호 전환하기
#include<string> #include<numeric>
std::string IntToString(int x)
{
bool is_Negative = false;
if (x < 0)
{
is_Negative = true;
}
std::string s;
do
{
s += '0' + abs(x % 10);
x /= 10;
} while (x);
s += is_Negative ? "-" : "";
return { rbegin(s),rend(s) };
}
int StringToInt(const std::string& s)
{
return (s[0] == '-' ? -1 : 1) * std::accumulate(begin(s) +
(s[0] == '-' || s[0] == '+'), end(s), 0,
[](int running_sum, char c) {return running_sum * 10 + c - '0'; });
}
|
cs |
1
2
|
// main
std::cout<<"6-1 "<<typeid(IntToString(1234)).name()<<std::endl; std::cout<<"6-1 "<<typeid(StringToInt(IntToString(1234))).name()<<std::endl;
|
cs |
결과창에는 같은 숫자만 보여 숫자대신 해당 타입을 확인하도록 출력했다.
'C++ 학습 > C++ 코딩인터뷰[6장]' 카테고리의 다른 글
[6. 문자열] 6.6 문장의 모든 단어 뒤집기 (0) | 2025.01.23 |
---|---|
[6. 문자열] 6.5 회문 확인하기 (0) | 2025.01.23 |
[6. 문자열] 6.4 문자열 바꾸고 삭제하기 (0) | 2025.01.23 |
[6. 문자열] 6.3 스프레드시트 열 인코딩 계산하기 (0) | 2025.01.23 |
[6. 문자열] 6.2 밑수 바꾸기 (0) | 2025.01.23 |