새소식

⌨️ Algorithms/백준

[Python] 백준 2757번_엑셀

2023. 3. 19. 23:16

  • -

https://www.acmicpc.net/problem/2757

 

2757번: 엑셀

입력은 여러 줄이며, RnCm형태이다. n은 행 번호 (1<=n<=300000000), m은 열 번호 (1<=m<=300000000) 이다. 입력의 마지막은 n과 m이 모두 0이며, 이때는 출력하지 않고 프로그램을 종료하면 된다.

www.acmicpc.net

 

  • 엑셀의 첫 번째 열은 A이고, 두 번째 열은 B이고, 26번째 열은 Z
  • 26번째 열 다음 열부터는 2글자를 이용
  • 예를 들어, 27번째 열은 AA이고, 28번째 열은 AB, 52번째 열은 AZ, 53번째 열은 BA이며, 이와 같이 계속 열의 이름을 붙임
  • ZZ열 다음 열은 AAA가 되고, 그 다음은 AAB
  • 엑셀에서 행은 그냥 행 번호를 사용하면 됨
  • 엑셀 스프레드시트에서 각 칸은 위에서 설명한 열과 행을 합쳐서 이름을 만들 수 있음
  • 가장 왼쪽 위에 있는 칸은 A1이 되고, 55열 23행에 있는 칸은 BC23
  • 열과 행이 주어졌을 때, 그 칸의 엑셀 스프레드시트 상에서 이름을 출력
  • 입력
    • 입력은 여러 줄이며, RnCm형태
    • n은 행 번호 (1<=n<=300000000), m은 열 번호 (1<=m<=300000000)
    • 입력의 마지막은 n과 m이 모두 0이며, 이때는 출력하지 않고 프로그램을 종료
  • 출력
    • 각 입력을 순서대로 한 줄에 하나씩 엑셀 스프레드시트 상에서의 이름을 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

""" 입출력 예시) R1C1 R3C1 R1C3 R299999999C26 R52C52 R53C17576 R53C17602 R0C0 -> A1 A3 C1 Z299999999 AZ52 YYZ53 YZZ53 """

 

 

## 의사코드 ## # 입력: RnCm # n, m = map(int, input()[1:].split('C')) # 자릿수의 값 = 열의 값을 26으로 나눈 나머지 # 자릿수의 값 = m % 26 # 다음 자릿수 = 기존 열의 값을 26으로 나눈 몫 -1 # m = (m // 26) - 1 # 리스트의 0번째 인덱스에 자릿수의 값 삽입 # li.insert(0, 자릿수의 값) # A-Z 대문자 리스트 # from string import ascii_uppercase # list(ascii_uppercase) # 엑셀 스프레드시트 상에서의 열 # = 리스트에 저장된 자릿수의 값을 대문자 리스트의 인덱스 값으로 넣어서 문자로 변환 # 열 + 행 # print(열 + str(n))

 

 

 

 

from string import ascii_uppercase while True: n, m = map(int, input()[1:].split('C')) if n == 0 and m == 0: break else: m -= 1 # A-Z 대문자 리스트 alpha = list(ascii_uppercase) # 열에 해당하는 값을 저장할 리스트 li = [] while m >= 0: # 자릿수의 값 = 열의 값을 26으로 나눈 나머지 col = m % 26 # 다음 자릿수 = 기존 열의 값을 26으로 나눈 몫 -1 m = (m // 26) - 1 # 리스트의 0번째 인덱스에 자릿수의 값 삽입 li.insert(0, col) res = '' # 리스트에 저장된 자릿수의 값을 대문자 리스트의 인덱스 값으로 넣어 문자로 변환 for c in li: res += alpha[c] # 열 + 행 print(res + str(n))

 

 

  • 과정 확인
'R52C52' """ n: 52, m: 52 m-1: 51 m % 26: 25 (m // 26) - 1: 0 li: [25] m % 26: 0 (m // 26) - 1: -1 li: [0, 25] c: 0 alpha[c]: A res: A c: 25 alpha[c]: Z res: AZ AZ52 """

 

 

 

 

https://docs.python.org/ko/3/library/string.html

 

string — Common string operations

Source code: Lib/string.py String constants: The constants defined in this module are: Custom String Formatting: The built-in string class provides the ability to do complex variable substitutions ...

docs.python.org

 

https://lngnat.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B0%92-%EC%B6%94%EA%B0%80-append-insert-extend-%EC%82%AC%EC%9A%A9

 

파이썬 리스트 값 추가하기 append insert extend 사용하기

파이썬 리스트를 다루다보면 값을 추가해야 할 일이 생길 수 있다. 값을 넣는 함수는 append함수와 insert함수가 있으며 extend함수를 사용할 경우 기존의 리스트 내용에 다른 리스트의 내용을 추가

lngnat.tistory.com

 

https://velog.io/@jaehyukjung/%EB%B0%B1%EC%A4%80-2757%EB%B2%88-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

백준 2757번 파이썬

해당 문제는 엑셀을 예시로 하는 문제로 행과 열의 순번이 주어졌을 때, 열의 경우 알파벳을 기준으로 나뉘는 것을 알 수 있다. 알파벳을 자리수라고 한다면 이를 26진법 수라고 생각하는게 쉬울

velog.io

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!