본문 바로가기
Algorithm/알고리즘 문제풀이

오늘의 알고리즘 (4월 9일)

by devraphy 2021. 4. 9.

1. 백준, SHA-256, 10930번

 

www.acmicpc.net/problem/10930

 

10930번: SHA-256

첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.

www.acmicpc.net

 


 

2. 생각해보자

  • 이번 문제는 쉬어가는 문제다. 
  • 해시함수를 어떻게 사용하는지 알기만 하면 풀 수 있는 문제이기 때문이다. 
  • 어떻게 사용하는지 알아보자. 

 


3. 풀이 및 코드분석

  • 해시 함수는 암호화 작업이다. 
  • 어떤 문자를 넣었을 때, 해당 문자를 굉장히 긴 길이의 문자열로 변환시켜준다. 
  • SHA-256 는 여러 해시 알고리즘 중에서 가장 효율적(=빠름)이고 안정적인 해시 함수라고 할 수 있다.
  • SHA-256을 안정적인 이유중 하나가 단방향성 암호화 방법으로, 복호화가 불가능 하다는 점이다.  
  • 기본적으로 언어마다 제공하는 해시 함수가 존재하기 때문에 이번 문제는 이를 이용하여 풀어주면 된다. 
import hashlib # 해시 라이브러리 import

input_data = input()

encoded_data = input_data.encode() # 해시 함수를 사용하기 위해 바이트코드로 변환한다.

result = hashlib.sha256(encoded_data).hexdigest() 
# 바이트 코드를 해시함수를 이용하여 해시 객체로 만든다.
# hexidigest()를 사용하여 사람이 읽을 수 있는 16진수 문자열 형태로 번역해준다. 

print(result)

댓글