본문 바로가기
알고리즘/백준

백준 1212번 8진수 2진수 파이썬 풀이

by 푸딩코딩 2023. 8. 1.
728x90
반응형

8진수 2진수 성공

 
 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 256 MB 42719 14382 11915 35.800%

문제

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

입력

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

출력

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

예제 입력 1 복사

314

예제 출력 1 복사

11001100

 

 

 

 

 

# import sys
# input=sys.stdin.readline

n=input()
arr=list(n) #리스트에 저장
k=len(arr)
ten=0

two=[]

for i in range (k):
    arr[i]=int(arr[i])

if(arr[0]==0):
    print(0)
    exit()
    
for i in range(k):
    temp=[]
    while(arr[i]>0):
        temp.append(arr[i]%2)
        arr[i]=int(arr[i]/2)
    if (i!=0 and len(temp)!=3):
        while(len(temp)<3):
            temp.append(0)
    temp.reverse()
    two+=temp
    
    
print(*two, sep='')

8진수를 2진수로 바꾸는 방법은, 각 자리에 대해서 3자릿수의 2진수로 변환시켜주는 것이다

예를 들어 

314는 

3-> 011

1-> 001

4-> 111 

로 계산하여 011001111로 표현할 수 있다. 

문제에서 0으로 시작하지 않는다해서 

if문을 설정해서 첫번째 자리수가 아니고, temp의 길이가 3이 아닌경우에만

앞부분에 0을 추가해주었다

그다음에 temp를 뒤집어서

+로 연결해주면 된다!

 

분명 잘 되는데 마지막에가서 97%에서 틀렸습니다!가 뜨길래 확인해보니

입력이 0일때를 설정하지 않았던 것이었다..

그래서 맨 처음 만약 입력이 0이라면 0을 출력하고 종료하게 설정하였다. 그랬더니 성공!! 

728x90
반응형