일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그리디
- Dynamic Programming
- data_engineer
- Pseudo Lab
- 백준 온라인 저지
- hackerrank
- dsf
- terraform
- datacamp
- 알고리즘
- 2023년 목표
- docker container
- docker
- SQL
- Airflow
- docker image
- delete join
- telegram
- 백준온라인저지
- MySQL
- 데이터 엔지니어
- leetcode
- Data Engineering
- BOT
- airflow architecture
- Spark
- 프로그래머스
- 빅데이터를 지탱하는 기술
- airflow webserver
- Python
Archives
- Today
- Total
Lim Seunghyun Space
[백준 온라인 저지] 진법 변환 본문
문제 링크
문제 내용
나의 풀이 및 설명 (With Python3)
문제 링크
문제 내용
- B진법 수 N을 주었을 때, 10진법으로 바꿔 출력하는 프로그램 작성
- 10진법을 넘어가는 진법에서 숫자로 표시할 수 없는 경우 알바펫 대문자를 사용하여 대체
- A : 10, B : 11, C : 12, .... , Y : 34, Z : 35
- 입력
- N, B가 한 줄로 제공
- 출력
- 10진법 결과
나의 풀이 및 설명 (With Python3)
# source : https://www.acmicpc.net/problem/2745
import sys
N, B = sys.stdin.readline().strip().split(" ")
answer = 0
for index, value in enumerate(N):
exp = len(N) - index - 1
if value.isalpha():
num = ord(value) - 55 # ord(문자) : 문자를 ascii code로 변환 -> 문자를 숫자로 변환하기 위함
else:
num = int(value)
answer += num * int(B)**exp
print(answer)
- for 문에 enumerate(N)을 해줌으로써 인덱스와 값을 가져오도록 했다.
- str.isalpha() 을 이용하여 값이 알파벳인지 확인하였고, ord(char)을 이용해 ascii code로 변환하여 사용하였다.
- ord("A") = 65 이기 때문에 55를 빼주었다.
Github : https://github.com/Limseunghyun95/Algorithm_study/blob/master/baekjoon/p_2745.py
728x90
'Algorithm > 문제' 카테고리의 다른 글
[백준 온라인 저지] 로프 (0) | 2022.01.28 |
---|---|
[백준 온라인 저지] 설탕 배달 (0) | 2022.01.24 |
[Leetcode] Climbing stairs (0) | 2021.12.13 |
[프로그래머스] 문자열 압축 (0) | 2021.12.05 |
[HackerRank] Validating Roman Numerals (0) | 2021.11.21 |