본문 바로가기
C++ 학습/C++ 코딩인터뷰[6장]

[6. 문자열] 6.3 스프레드시트 열 인코딩 계산하기

by msugi 2025. 1. 23.

[해당 문제는 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.3 스프레드시트 열 인코딩 계산하기

스프레드시트의 열값이 문자열로 주어졌을 때 이를 정수값으로 변환하는 함수를 작성하라.
(단, 'A'는 1, 'AA'는 27, 'ZZ'는 702)


간단한게 26진수 숫자를 정수값으로 바꾸는 문제라고 생각해도 쉽다.

소스코드와 결과는 다음과 같다.

1
2
3
4
5
6
7
// 6.3 스프레드시트 열 인코딩 계산하기
#include
<string>
#include<numeric>
int SSDecodeColID(const std::string& col)
{
    return std::accumulate(begin(col), end(col), 0,
        [](int result, char c) {return result * 26 + c - 'A' + 1; });
}
cs
1
// main
std
::cout << "6-3 " << SSDecodeColID("ABC"<< std::endl;//6-3
cs
결과