문제
2진수로 표현된 수가 입력으로 주어진다. 이 수에 17을 곱한 결과를 2진수로 출력하는 문제다. 입력 수는 최대 1000비트로 일반 정수형을 초과할 수 있다.
입력
- 한 줄: 2진수 문자열 (최대 1000비트)
출력
입력 값의 17배를 2진수로 출력한다.
예제
| 입력 | 출력 |
|---|---|
1 | 10001 |
풀이
파이썬의 임의 정밀도 정수와 진수 변환 내장 함수를 활용하여 한 줄로 해결한다.
int(n, 2)로 2진수 문자열을 10진 정수로 변환한다.- 변환된 정수에 17을 곱한다.
bin()함수로 다시 2진수 문자열로 변환하고, 앞의 "0b" 접두사를 슬라이싱으로 제거한다.
핵심 아이디어: 파이썬은 임의 정밀도 정수를 기본 지원하므로, 1000비트 수도 오버플로 없이 처리 가능하다. int(s, 2) → 곱셈 → bin()[2:] 의 세 단계로 완성된다.
코드
n = int(input(), 2)
n *= 17
print(bin(n)[2:])복잡도
- 시간: O(N)
- 공간: O(N)