새소식

⌨️ Algorithms/백준

[Python] 백준 2998번_8진수

2023. 6. 15. 21:06

  • -

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

 

2998번: 8진수

창영이는 여러 가지 진법을 공부하고 있다. 창영이는 어제 2진법을 배웠고, 오늘은 8진법을 배웠다. 이제, 2진법 수를 8진법 수로 변환하려고 한다. 창영이가 사용한 방법은 다음과 같다. 2진수의

www.acmicpc.net

 

  • 2진법 수를 8진법 수로 변환하려고 함
  • 창영이가 사용한 방법은 다음과 같음
    • 1) 2진수의 길이가 3으로 나누어 떨어질 때 까지 수의 앞에 0을 붙임
    • 2) 그 다음, 3자리씩 그룹을 나눔
    • 3) 아래의 표를 참고해 8진수로 바꿈
  • 2진수가 주어졌을 때, 창영이가 사용한 방법을 이용해 8진수로 바꾸기

 

 

 

  • 입력
    • 첫째 줄에 2진수가 주어짐
    • 이 수는 100자리 이내이고, 첫 번째 자리는 1
  • 출력
    • 첫째 줄에 8진수 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

(예제 입력 1) 
1010
    -> 12

(예제 입력 2) 
11001100
        -> 314
"""

 

 

## 의사코드 ##

# 2진수의 길이가 3으로 나누어 떨어질 때까지 0 붙이기
# while len(num) % 3 != 0:
#     num = '0' + num

# 3자리씩 나눠서 표에 나온 수로 변환
# res = ''
# while num:
#     # 3자리씩 나누기
#     res += str(dic[num[0:3]])
#     # 변환한 3자리 제외
#     num = num[3:]

 

 

 

 

num = input()
# 2진수의 길이가 3으로 나누어 떨어질 때까지 0 붙이기
while len(num) % 3 != 0:
    num = '0' + num

dic = {'000':0, '001':1, '010':2, '011':3, '100':4, '101':5, '110':6, '111':7}

res = ''
while num:
    # 3자리씩 나누기
    res += str(dic[num[0:3]])
    # 변환한 3자리 제외
    num = num[3:]

print(res)

 

 

 

 

 

 

https://velog.io/@bjo6300/%EB%B0%B1%EC%A4%80-2998-%ED%8C%8C%EC%9D%B4%EC%8D%AC-8%EC%A7%84%EC%88%98

 

[백준 2998 파이썬] 8진수

https://www.acmicpc.net/problem/2998문제가 요구하는 것처럼 자리수를 3의 배수로 맞추고 3자리씩 나누어 8진수 값을 구한다.2진수로 입력을 받기2진수를 10진수(정수)로 바꾼 다음에 8진수로 고쳐서 출력

velog.io

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!