728x90
1. 문제 소개
스테가노그래피의 한 기법인 4-LSB를 이용하여, 척이가 은규에게 준 세 개의 십진수에서 화장실 비밀번호를 도출하는 문제다. 각 숫자의 4-LSB를 추출하고, 이를 이진수로 표현하여 순서대로 이어붙인 후, 다시 십진수로 변환하여 네 자리 비밀번호를 얻어야 한다.
2. 문제 해결 방법
- 입력받기: 세 개의 십진수를 입력받는다.
- 4-LSB 추출: 각 숫자에 대해 4-LSB를 추출한다. 이는 숫자를 2진수로 변환한 후, 하위 4비트를 가져오는 것과 같다.
- 이진수로 변환 및 이어붙이기: 추출한 4-LSB를 4자리의 이진수 문자열로 변환하고, 이를 순서대로 이어붙인다.
- 십진수로 변환: 이어붙인 이진수 문자열을 십진수로 변환한다.
- 비밀번호 생성: 변환된 십진수가 네 자리가 되도록 앞에 0을 붙여 비밀번호를 만든다.
3. 백준 32658 4-LSB 파이썬(Python) 정답 코드
A = int(input())
B = int(input())
C = int(input())
# 각 숫자의 4-LSB 추출 및 4자리 이진수로 변환
bits_A = format(A & 0b1111, '04b')
bits_B = format(B & 0b1111, '04b')
bits_C = format(C & 0b1111, '04b')
# 이진수 문자열 이어붙이기
concat_bits = bits_A + bits_B + bits_C
# 십진수로 변환
D = int(concat_bits, 2)
# 네 자리 비밀번호 생성 (앞에 0을 붙여서)
password = f"{D:04d}"
print(password)
4. 백준 32685 4-LSB 파이썬 정답 코드 해설
- 입력받기:세 개의 십진수를 각각 A, B, C에 저장한다.
-
4-LSB 추출 및 4자리 이진수로 변환:
- A & 0b1111은 A의 하위 4비트를 추출한다.
- format(값, '04b')를 사용하여 4자리 이진수 문자열로 변환한다. 자리수가 부족하면 앞에 0을 채운다.
- 이진수 문자열 이어붙이기:세 개의 4자리 이진수 문자열을 순서대로 이어붙여 12자리의 이진수 문자열을 만든다.
- 십진수로 변환:이어붙인 이진수 문자열 concat_bits를 십진수 정수 D로 변환한다.
- 네 자리 비밀번호 생성:
- f"{D:04d}"는 D를 네 자리의 십진수 문자열로 변환하며, 자리수가 부족하면 앞에 0을 채운다.
- 이렇게 생성된 password가 최종 비밀번호가 된다.
- 비밀번호 출력:비밀번호를 출력한다.
5. 백준 32685 4-LSB 제출 결과
도움이 되셨다면 공감과 댓글 부탁드립니다.
728x90
'Python > 백준' 카테고리의 다른 글
백준 반복수[32687] 파이썬(Python) 코드 + 해설 (1) | 2024.11.20 |
---|---|
백준 제비통신 [32337] 파이썬(Python) 코드 + 해설 (0) | 2024.11.19 |
백준 대동여지도 [32339] 파이썬(Python) 코드 + 해설 (0) | 2024.11.17 |
백준 트리 장인 [32340] 파이썬(Python) 코드 + 해설 (0) | 2024.11.16 |
백준 카드 뒤집기 게임 [32622] 파이썬(Python) 코드 + 해설 (1) | 2024.11.15 |