newChobo
Published 2023. 4. 6. 23:53
BOJ 2745번 (단계별) 공부/백준

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

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

첫 줄 입력 N, B

B진법 수 N을 10진법으로 바꾸면 항상 10억보다 작거나 같다

 

B진법 숫자 N을 10진법으로 바꿔 출력하라.

 

# import math #math 모듈을 먼저 import해야 한다.
# math.ceil(3.14) #결과는 4
# math.floor(3.14)    #결과는 3
# round(3.1415)   #결과는 3

#형태
# - 문자열.split()
# - 문자열.split('구분자')
# - 문자열.split('구분자',분할횟수)
# - 문자열.split(sep='구분자',maxsplit=분할횟수)

#배열 생성
# bList = [0 for i in range(n)]

#입력
# num_list = list(map(int, input().split()))
# n, m = map(int, input().split())
# 형변환
# d = int('1')

#리스트 슬라이싱
# [:] 처음부터 끝까지
# [start:] start오프셋(인덱스)부터 끝까지
# [:end] 처음부터 end-1 오프셋(인덱스)까지
# [start : end] start오프셋부터 end-1 오프셋(인덱스)까지
# [start : end : step] step만큼 문자를 건너뛰고, 위와 동일추출

#for i in range(a, b, c)에서 b는 포함되지 않는다.(a이상 b미만)
##################################################
# N, M = map(int, input().split())
# bList = [i+1 for i in range(N)]
# for a in range(M):
#   i, j = map(int, input().split())
#   temp = bList[i - 1]
#   bList[i - 1] = bList[j - 1]
#   bList[j - 1] = temp

# for i in range(N):
#   print(bList[i], end=' ')
##################################################
#여러줄 입력받기
# import sys
# while True:
#     try:
#         a, b = map(int, sys.stdin.readline().split())
#         print(a + b)
#     except:
#         break
###################################################
############## 풀이 ################################
N, B = input().split()
B = int(B)

sum = 0
j = 1
for i in N[::-1]:
  if (ord('A') <= ord(i) and ord(i) <= ord('Z')):
    k = 10 + (ord(i) - ord('A'))
  else:
    k = int(i)
  sum += k * j    #순서 잘 생각해라.
  j *= B  
print(sum)

# GPT
# N, B = input().split()
# B = int(B)

# sum = 0
# j = 1
# for i in N[::-1]:
#     if ('A' <= i <= 'Z'):
#         k = 10 + (ord(i) - ord('A'))
#     else:
#         k = int(i)
#     sum += k * j
#     j *= B
# print(sum)

# GPT
# N, B = input().split()
# B = int(B)

# sum = 0
# j = 1
# for i in N[::-1]:
#     if ('A' <= i <= 'Z'):
#         k = ord(i) - ord('A') + 10  # A부터 Z까지 10부터 35까지 인코딩
#     else:
#         k = int(i)
#     sum += k * j
#     j *= B
# print(sum)

 

'공부 > 백준' 카테고리의 다른 글

BOJ 10798번 (단계별)  (0) 2023.04.06
BOJ 25206번 (단계별)  (0) 2023.04.06
BOJ 10988번 (단계별)  (0) 2023.04.06
BOJ 10812번 (단계별)  (0) 2023.04.06
BOJ 27866번 (단계별)  (0) 2023.04.06
profile

newChobo

@새로운뉴비

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!