백준 1373 파이썬 (2진수 8진수)

철웅·2022년 12월 16일
0

BOJ

목록 보기
22/46

문제 : https://www.acmicpc.net/problem/1373


  1. 주어진 2진수를 3자리씩 끊은다음에
  2. 각 자리수에 4, 2, 1을 곱해줘서 자릿수마다 더해주면 8진수이다.

💻 Code

N = input()[::-1]
ans = ''
tmp = 0		# 각 자릿수의 계산 결과를 담을 변수
cnt = 1		# 곱해줄 배수 : 1,2,4

for i in N:
    if(cnt < 8):
        tmp += cnt * int(i)
        cnt *= 2	
    else:
        ans += str(tmp)
        tmp = 1 * int(i)
        cnt = 2
ans += str(tmp)
print(int(ans[::-1])) 
  • input()[::-1]로 값을 거꾸로 받을 수도 있다는 것을 알게되었다.

💫 날먹 코드

print(oct(int(input(),2))[2:])
  • 놀랍게도 이거 한 줄 이면 끝난다.
  • int(input(),2) : 2진수를 10진수로 변환 (입력은 2진수로 할거다 이런 뜻)
    ex) 1111 -> 15
  • oct() : 10진수를 8진수로 변환
    자매품 : hex(), bin()
    이런 함수들은 0b, 0o, 0x 같은 접두사가 붙으므로 [2:]로 슬라이싱

0개의 댓글