백준 2757번 파이썬

정재혁·2022년 8월 8일
0

백준 2757번 엑셀 문제

문제


입력 및 출력값


풀이:

해당 문제는 엑셀을 예시로 하는 문제로 행과 열의 순번이 주어졌을 때, 열의 경우 알파벳을 기준으로 나뉘는 것을 알 수 있다. 알파벳을 자리수라고 한다면 이를 26진법 수라고 생각하는게 쉬울 수 있다. 즉 값을 26으로 나눈 나머지를 자릿수의 값으로 저장하고, 다음 자리수를 기존 값에 26으로 나눈 몫에 -1을 해준다. 이때 1을 빼주는 이유는 리스트의 인덱스 값이 0부터 25까지 이므로 1을 빼준다.
그 후 해당 자리의 값을 string모둘로 받아온 대문자 리스트의 인덱스값으로 집어넣어 문자를 합치는 방식으로 진행했다.

코드:

from string import ascii_uppercase

while True:
    s1 = input()
    s = s1[1:]
    r, c = map(int,s.split('C'))
    if r == 0 and c ==0:
        break
    else:
        c -= 1
        alpha_lst = list(ascii_uppercase)
        lst = []
        while c >= 0:
            d = c % 26
            c = c // 26 -1
            lst.insert(0, d)
        ans =''
        for x in lst:
            ans += alpha_lst[x]

        ans += str(r)
        print(ans)
profile
저는 정재혁임니다^___^

0개의 댓글