본문 바로가기
Python/백준

백준 4-LSB [32685] 파이썬(Python) 코드 + 해설

by Guardy 2024. 11. 18.
728x90
백준 32685 4-LSB

1.  문제 소개

스테가노그래피의 한 기법인 4-LSB를 이용하여, 척이가 은규에게 준 세 개의 십진수에서 화장실 비밀번호를 도출하는 문제다. 각 숫자의 4-LSB를 추출하고, 이를 이진수로 표현하여 순서대로 이어붙인 후, 다시 십진수로 변환하여 네 자리 비밀번호를 얻어야 한다.

2.  문제 해결 방법

  1. 입력받기: 세 개의 십진수를 입력받는다.
  2. 4-LSB 추출: 각 숫자에 대해 4-LSB를 추출한다. 이는 숫자를 2진수로 변환한 후, 하위 4비트를 가져오는 것과 같다.
  3. 이진수로 변환 및 이어붙이기: 추출한 4-LSB를 4자리의 이진수 문자열로 변환하고, 이를 순서대로 이어붙인다.
  4. 십진수로 변환: 이어붙인 이진수 문자열을 십진수로 변환한다.
  5. 비밀번호 생성: 변환된 십진수가 네 자리가 되도록 앞에 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 파이썬 정답 코드 해설

  1. 입력받기:세 개의 십진수를 각각 A, B, C에 저장한다.

  2. 4-LSB 추출 및 4자리 이진수로 변환:
    • A & 0b1111은 A의 하위 4비트를 추출한다.
    • format(값, '04b')를 사용하여 4자리 이진수 문자열로 변환한다. 자리수가 부족하면 앞에 0을 채운다.
  3. 이진수 문자열 이어붙이기:세 개의 4자리 이진수 문자열을 순서대로 이어붙여 12자리의 이진수 문자열을 만든다.
  4. 십진수로 변환:이어붙인 이진수 문자열 concat_bits를 십진수 정수 D로 변환한다.
  5. 네 자리 비밀번호 생성:
    • f"{D:04d}"는 D를 네 자리의 십진수 문자열로 변환하며, 자리수가 부족하면 앞에 0을 채운다.
    • 이렇게 생성된 password가 최종 비밀번호가 된다.
  6. 비밀번호 출력:비밀번호를 출력한다.

5.  백준 32685 4-LSB 제출 결과

32685 4-LSB 제출결과

 

도움이 되셨다면 공감과 댓글 부탁드립니다.

728x90