문제:

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

입력:

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

출력:

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.

풀이방법:

2진수를 8진수로 바꾸는 수학적 방법은 2진수인 수 뒷부분부터 3개씩 끊어가면서 10진수 수로 변환을 하고 이를 이어붙이면 8진수 수가 된다.

즉 이 문제에서는 11001100이라는 예시가 있었을 때 뒤에서부터 3자리씩 끊으면 다음과 같다.

   11/001/100

따라서 이 수를 10진수 수로 변환하면 다음과 같다.

    3/1/4

답은 이 수들을 이어 붙인 314이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
s=input()
answer=''
ans=0
count=0
for i in range(len(s)-1,-1,-1):
    if count%3 == 0:
        ans+=int(s[i])*1
        count+=1
    elif count%3 == 1:
        ans+=int(s[i])*2
        count+=1
    elif count%3 == 2:
        ans+=int(s[i])*4
        answer+=str(ans)
        ans=0
        count=0
if ans >= 0:
    answer+=str(ans)
answer=answer[::-1]
print(int(answer))
cs

 

문제링크:

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

'Algorithm > Python' 카테고리의 다른 글

[BOJ] 10451.순열 사이클  (0) 2019.09.05
[BOJ]10825. 국영수  (0) 2019.09.04
[BOJ]9613. GCD 합  (0) 2019.09.02
[BOJ]2011. 암호코드  (0) 2019.09.01
[BOJ]2133. 타일 채우기  (0) 2019.08.31

+ Recent posts