이 문제는 2진수 -> 10진수 변환과 10진수 -> 2진수 변환 모두를 구현해야 하는 문제이다. 파이썬 내장 함수와 문자열 인덱싱을 통해 쉽게 구현할 수도 있지만, 직접 코드를 작성해보았다.
https://www.acmicpc.net/problem/11179
💻 최종 코드
n = int(input())
b = []
x = 0
ans = []
c = 0
while n != 0:
if n % 2 == 0: b.append('0')
else: b.append('1')
n //= 2
# 뒤에서부터 append 되니까 어차피 뒤집혀 나옴
s = ''.join(b)
for i in range(len(s)-1,-1,-1):
x = int(s[i]) * 2 ** c
ans.append(x)
c += 1
print(sum(ans))
while 문은 10진수를 이진수로 변환한 코드이다.
아래 단계와 같이 몫과 나머지를 활용하면 10진수 > X진수 변환을 구할 수 있다.
for문은 10진수 -> 2진수 변환이다. s라는 문자열에 이진수를 구성하는 문자형 숫자들이 나열되어 있기 때문에, 자릿수마다 2에 대한 지수 연산을 해주면 2진수로 변환이 가능하다.
뒤에서부터 2^0, 2^1, .... 으로 연산이 되기 때문에, 반복문에서 문자열 뒤부터 연산을 하기 위해 범위를 range(len(s)-1, -1, -1)으로 잡아주었다.
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 1350 진짜공간 (0) | 2023.01.15 |
---|---|
[백준/python] 애너그램 (0) | 2023.01.14 |
[백준/Python] #1350 진짜 공간 (0) | 2023.01.14 |
[백준/python] 1350 진짜 공간 (0) | 2023.01.13 |
[BOJ /Python] 10867 중복 빼고 정렬하기 (0) | 2023.01.12 |