programming
모 회사 입사문제 - 숫자 입력받아 엑셀 스프레드 시트 컬럼 이름 출력하기 퀴즈
by Kitle · 2017. 06. 08.
엑셀과 같은 스프레드시트에서, 컬럼 이름은 첫번째가 A, 두번째가 B... 같은 식인데,
#26번째인 Z 다음부터는 AA, AB,.. 처럼 됩니다.
#숫자를 입력받으면 그 순서에 대응되는 엑셀 컬럼을 출력하는 프로그램을 작성하세요.
#26번째인 Z 다음부터는 AA, AB,.. 처럼 됩니다.
#숫자를 입력받으면 그 순서에 대응되는 엑셀 컬럼을 출력하는 프로그램을 작성하세요.
#엑셀과 같은 스프레드시트에서, 컬럼 이름은 첫번째가 A, 두번째가 B... 같은 식인데,
#26번째인 Z 다음부터는 AA, AB,.. 처럼 됩니다.
#숫자를 입력받으면 그 순서에 대응되는 엑셀 컬럼을 출력하는 프로그램을 작성하세요.
#
x=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
value=[]
y=int(input("Input :"))
y=y-1
if y < 0:
print("Out of range.")
elif y > 25:
while y > 25:
modtemp=y%26
if modtemp < 26:
value.append(x[modtemp])
y=(int)(y/26)-1
if y < 26:
value.append(x[y])
value.reverse()
print(value)
else: # A~Z 범위인 경우 바로 출력하고 종료
print(x[y])
풀이 :
10진수 변환 방법을 활용한다. 해당 숫자를 나누어 몫과 나머지를 활용한다.
1을 입력하면 A가 출력되어야 한다. 컴퓨터의 연산 체계에서는 0부터 시작하므로
1을 입력하면 0으로 매핑할 수 있도록 입력값을 N-1로 보정한다.
EX) 1을 입력함 -> N-1 -> 0으로 매핑. 0에는 A매핑... 이런식으로
(꼭 이 방법만 가능한 것은 아님)
나눈 값이 26보다 큰 경우는 나머지를 출력하고 반복하여 나눠준다.
목 값을 보정하기위해 중간에 N-1을 시행한다.
EX) 702 입력시,
값 701 로 보정
26으로 나눈 값 26
26으로 나눈 나머지 - 25 -> Z 배열 삽입
26으로 나눈 값 26 -1 보정 -> 25 -> Z 배열 삽입
배열 역순 출력
결과 ZZ
EX) 703 입력시
702로 보정
26으로 나눈값 27
26으로 나눈 나머지 - 0 -> A 배열 삽입
26으로 나눈 값 27 - 1 보정 -> 26
26이 범위보다 크므로 중간 몫 다시 /26
나눈 나머지 0 -> A 배열삽입
몫 0 -> 범위 내이므로 다시 A 배열삽입