https://www.acmicpc.net/problem/2745
๋ฌธ์
B์ง๋ฒ ์ N์ด ์ฃผ์ด์ง๋ค. ์ด ์๋ฅผ 10์ง๋ฒ์ผ๋ก ๋ฐ๊ฟ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
10์ง๋ฒ์ ๋์ด๊ฐ๋ ์ง๋ฒ์ ์ซ์๋ก ํ์ํ ์ ์๋ ์๋ฆฌ๊ฐ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฒณ ๋๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ B๊ฐ ์ฃผ์ด์ง๋ค. (2 ≤ B ≤ 36)
B์ง๋ฒ ์ N์ 10์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ฉด, ํญ์ 10์ต๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ B์ง๋ฒ ์ N์ 10์ง๋ฒ์ผ๋ก ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1 | ์์ ์ถ๋ ฅ1 |
ZZZZZ 36 | 60466175 |
์์ค ์ฝ๋
# 1
N,B = input().split()
idx = len(N) - 1
decimal_num = 0
for num in N:
add_num = 0
if num.isdigit():
add_num = int(num) * (int(B)**idx)
else:
add_num = (ord(num)-55) * (int(B)**idx)
decimal_num += add_num
idx -= 1
print(decimal_num)
ํ์ด # 1
- ์ซ์๋ฅผ N, ์ง๋ฒ์ B์ ์ ์ฅ
- ์ซ์์ ๊ธธ์ด์์ 1์ ๋บ ๊ฐ์ idx์ ์ ์ฅ (์ง๋ฒ ๊ณ์ฐ ์ ์ฌ์ฉ)
- N์ ํ ์๋ฆฌ์ฉ ๋๋ฉด์ ์ซ์์ธ์ง ๋ฌธ์์ธ์ง ํ์ธ
- ์ซ์์ธ ๊ฒฝ์ฐ ํด๋น ์ซ์์ idx ์ ๊ณฑ์ add_num์ผ๋ก ์ฌ์ฉ
- ๋ฌธ์์ธ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์์ ์์คํค ์ฝ๋ ๋ฒํธ์์ 55๋ฅผ ๋บ ์์ idx ์ ๊ณฑ์ add_num์ผ๋ก ์ฌ์ฉ
- decimal_num์ ์์์ ๊ตฌํ ์๋ฅผ ๋ํ๊ณ ์๋ฆฟ์ idx์๋ 1์ ๋บด๊ธฐ
# 2
N,B = input().split()
N = N[::-1]
numbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
decimal_num = 0
for idx,num in enumerate(N):
decimal_num += (int(B)**idx)*(numbers.index(num))
print(decimal_num)
ํ์ด # 2
- ์ซ์๋ฅผ N, ์ง๋ฒ์ B์ ์ ์ฅ
- ์ซ์ N์ ๊ฑฐ๊พธ๋ก ๋ง๋ค๊ธฐ (์ง๋ฒ ๊ณ์ฐ์์ ์์์๋ถํฐ ์๋ฆฟ๊ฐ์ ๊ณฑํ๊ธฐ ์ํ ๊ณผ์ )
- ์ซ์์ ๋ฌธ์๋ฅผ numbers์ ์ ์ฅ
- N์ ํ ์๋ฆฌ์ฉ ๋๋ฉด์ ๊ฐ ๋ํ๊ธฐ
- (B์ง๋ฒ์ idx ์ ๊ณฑ) x (numbers์์ num์ ์ธ๋ฑ์ค ๋ฒํธ)
์์คํค์ฝ๋ ๋ฒํธ๋ฅผ ์ด์ฉํ ์ฒซ ๋ฒ์งธ ํ์ด๋ก ํ์๋๋ฐ ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐพ์๋ณด๋ ๋๋ถ๋ถ ๋ ๋ฒ์งธ ํ์ด๋ก ํผ ๊ฒ ๊ฐ๋ค. ํ์ธํด๋ณด๋ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ์๊ฐ์ ๋๊ฐ์์ ํธํ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ๋ ๋ฏ ํ๋ค.