leetcode_168번 - Excel Sheet Column Title (수학 문제)

2062 단어 LeetCode

Excel Sheet Column Title

 
Total Accepted: 25652 Total Submissions: 142582 My Submissions
Question
 Solution 
 
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
    1 -> A

    2 -> B

    3 -> C

    ...

    26 -> Z

    27 -> AA

    28 -> AB 

Credits:Special thanks to  @ifanchu  for adding this problem and creating all test cases.
 
Hide Tags
 
Math
 
이 문제는 사실 10진법을 26진법으로 바꾸는 계산이다. 단지 1부터 시작하는 것이지 0에서 시작하는 것이 아니기 때문에 좀 헷갈린다. 시작할 때 멍청한 방법을 생각해 보니 시간이 초과되었다
나중에 다른 사람의 해법을 봤어요.
#include<iostream>

#include<string>

#include<math.h>

using namespace std;

/*

string convertToTitle(int n) {

	string str1;

	int i=0;

	int a=n;

	while(1)

	{

		int pinf_i=pow(26.0,i);

		int pinf_ii=pow(26.0,i+1);

		int b;

		if(a<=pinf_ii)

		{b=a/pinf_i;str1.push_back(b+64);break;}



		if(a>pinf_ii)

		{

			if(a%pinf_ii==0)

			{

				str1.push_back('Z');

				a=a-26*pinf_i;

			}

			else

			{

				b=(a%pinf_ii)/pinf_i;

				str1.push_back(b+64);

				a=a-b*pinf_i;

			}

			i++;

		}

	}

	string str2;

	int N=str1.size();

	while(N--)

	{

		str2.push_back(str1.back());

		str1.pop_back();

	}

	return str2;

}

*/

string convertToTitle(int n)

{

	string str1;



	while(n!=0)

	{

		n--;

		str1.push_back(n%26+65);

		n/=26;

	}

	string str2;

	int N=str1.size();

	while(N--)

	{

		str2.push_back(str1.back());

		str1.pop_back();

	}

	return str2;

}



int main()

{

	cout<<convertToTitle(703)<<endl;

}


  

좋은 웹페이지 즐겨찾기