728x90
반응형
문제:
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 |
문제링크:
728x90
반응형
'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 |