[문제]
https://www.acmicpc.net/problem/1373
[풀이]
1) 첫 번째 제출 코드
input을 [::-1]을 이용해 거꾸로 받아 n에 저장한다.
n을 3개씩 슬라이싱한 len()이 2이면 '0'을 추가, 1이면 '00'을 더한다.
그 후 자릿수에 맞게 곱하고 더해서 8진수 octal을 구한 후 str()로 문자열화 해 result에 추가한다.
마지막에 result를 거꾸로 출력한다.
2) 두 번째 수정 코드
int()는 인자가 두 개가 들어갈 수 있는 함수이다. int(input(), 2)의 경우 input을 2진수로 인식해준다. 인자의 default는 10이기 때문에 인자 값을 따로 입력하지 않을 경우에는 10진수로 인식한다.
print(oct(int(input(), 2))[2:])
따라서 위 코드는 입력을 2진수로 인식해 받고 그 수를 파이썬 내장함수 oct()를 이용해 8진수로 바꾼다. oct()를 이용해 8진수로 바꿀 경우 맨 앞에 해당 수가 8진수임을 알려주는 '0o'가 붙는데 이를 [2:]를 이용해 없애고 출력한다.
수정 코드를 이용하면 시간이 엄청 절약된다.
[코드]
- 첫 번째 제출 코드
if __name__ == '__main__':
n = input()[::-1]
result = ''
for i in range(0, len(n), 3):
piece = n[i:i+3]
if len(piece) == 2:
piece += '0'
elif len(piece) == 1:
piece += '00'
octal = int(piece[0]) * 1 + int(piece[1]) * 2 + int(piece[2]) * 4
result += str(octal)
print(result[::-1])
- 두 번째 수정 코드
if __name__ == '__main__':
print(oct(int(input(), 2))[2:])
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 1252번 이진수 덧셈 (0) | 2021.07.11 |
---|---|
[Python] BOJ/백준 1225번 이상한 곱셈 (0) | 2021.07.10 |
[Python] BOJ/백준 1173번 운동 (0) | 2021.07.09 |
[Python] BOJ/백준 1264번 모음의 개수 (0) | 2021.07.09 |
[Python] BOJ/백준 1333번 부재중 전화 (1) | 2021.07.08 |