본문 바로가기

프로그래밍/미분류

유사진법표기 엑셀컬럼 알파벳식 숫자표기법

반응형

http://synapsoft.co.kr/jsp/recruit/13_apply.html


10진법 표기법은 다음과 같다.

 N = a_n x 10^n + ... + a_1 x 10^1 + a_0 x 10^0 , a_i ∈ { 0 , ..., 9 }

이 표기법으로는 0 이상의 모든 수를 표현할 수 있으며, 표기법은 유일하다.


이 표기법을 살짝 바꾼 표기법을 만들어 보면, 

 N = a_n x 10^n + ... + a_1 x 10^1 + a_0 x 10^0 , a_i ∈ { 一 , ..., 九, 十 }

이 표기법으로는 1 이상의 모든 수를 표현할 수 있으며 ( 0은 표기하지 못한다. ), 표기법은 유일하다.


심볼을 10개가 아닌 알파벳 대문자를 이용하면 26진법과 유사하게 26의 거듭제곱의 합으로 표현되는 표기법이 가능하다. 즉,

 N = a_n x 26^n + ... + a_1 x 26^1 + a_0 x 26^0 , a_i ∈ { A , ..., Z }


이 표기법이 바로 문제에서 나온 엑셀 컬럼 문자이다.


일반적인 10진법 표기를 구하는 알고리즘은 다음과 같다.

0. n을 10으로 나눈 나머지 (0, ... , 9) 가 가장 마지막 자리의 숫자가 된다.

1. n을 10으로 나눈 몫이 0이 아니라면, 그 값을 n으로 삼는다. 0이라면 끝낸다.

2. n을 10으로 나눈 나머지 (0, ..., 9) 가 그 다음 숫자가 된다.

3. 1로 간다.


0이 없는 유사N진법 표기는 알고리즘이 달라져야 한다.

0. n을 N으로 나눈 나머지 (1, ..., N ) 이 가장 마지막 자리의 숫자가 된다.

1. (n-나머지)을 N으로 나눈 몫이 0이 아니라면, 그 값을 n으로 삼는다. 0이라면 끝낸다.

2. n을 N으로 나눈 나머지 (1,..., N ) 가 그 다음 숫자가 된다.

3. 1로 간다.





728x90