문제 링크
https://www.acmicpc.net/problem/1373
1373번: 2진수 8진수
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
www.acmicpc.net
문제

문제 풀이
처음에 제출했던 코드는 아래와 같다.
n = input()[::-1]
convert10 = 0
result = ""
for i in range(len(n)):
convert10 += int(n[i]) * (2 ** i)
while convert10 != 0:
result += convert10 % 8
convert10 //= 8
print(result[::-1])
이렇게 직접 2진수를 10진수로 변환하고, 그것을 다시 8진수로 변환하는 코드를 짜서 제출했는데
수정을 계속 해도 시간 초과가 떴다.
결국 구글링을 통해 해결법을 찾아보니 정말 간단한 내장함수가 존재했다.
# 정답 코드
print(oct(int(input(),2))[2:])
int()의 두 번째 인자는 진법을 나타낸다.
즉, int(input(), 2)는 숫자를 2진법으로 입력받는다는 것을 의미한다.
oct()는 8진법으로 숫자를 변환하는 함수이다.
[2:]을 해주는 이유는 10진법이 아닌 8진법으로 변환을 진행했기 때문에
8진법임을 나타내는 0o가 숫자의 앞에 나타나는데
출력 예시에 그것이 나타나있지 않으므로 그것을 지우기 위해 3번째 글자부터 출력하는 것이다.
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 2805 나무 자르기 (파이썬 python) (0) | 2022.01.26 |
---|---|
[백준] 1654 랜선 자르기 (파이썬 python) (0) | 2022.01.26 |
[백준] 2745 진법 변환 (파이썬 python) (0) | 2022.01.25 |
[백준] 11005 진법 변환 2 (파이썬 python) (0) | 2022.01.25 |
[백준] 9613 GCD 합 (파이썬 python) (0) | 2022.01.25 |
문제 링크
https://www.acmicpc.net/problem/1373
1373번: 2진수 8진수
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
www.acmicpc.net
문제

문제 풀이
처음에 제출했던 코드는 아래와 같다.
n = input()[::-1]
convert10 = 0
result = ""
for i in range(len(n)):
convert10 += int(n[i]) * (2 ** i)
while convert10 != 0:
result += convert10 % 8
convert10 //= 8
print(result[::-1])
이렇게 직접 2진수를 10진수로 변환하고, 그것을 다시 8진수로 변환하는 코드를 짜서 제출했는데
수정을 계속 해도 시간 초과가 떴다.
결국 구글링을 통해 해결법을 찾아보니 정말 간단한 내장함수가 존재했다.
# 정답 코드
print(oct(int(input(),2))[2:])
int()의 두 번째 인자는 진법을 나타낸다.
즉, int(input(), 2)는 숫자를 2진법으로 입력받는다는 것을 의미한다.
oct()는 8진법으로 숫자를 변환하는 함수이다.
[2:]을 해주는 이유는 10진법이 아닌 8진법으로 변환을 진행했기 때문에
8진법임을 나타내는 0o가 숫자의 앞에 나타나는데
출력 예시에 그것이 나타나있지 않으므로 그것을 지우기 위해 3번째 글자부터 출력하는 것이다.
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 2805 나무 자르기 (파이썬 python) (0) | 2022.01.26 |
---|---|
[백준] 1654 랜선 자르기 (파이썬 python) (0) | 2022.01.26 |
[백준] 2745 진법 변환 (파이썬 python) (0) | 2022.01.25 |
[백준] 11005 진법 변환 2 (파이썬 python) (0) | 2022.01.25 |
[백준] 9613 GCD 합 (파이썬 python) (0) | 2022.01.25 |