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

1920-수 찾기 (python)

by bky373 2020. 10. 6.

1. SHA256를 사용한 첫 번째 코드(런타임 에러)
- SHA256를 사용한 이유? 문제풀기 직전에 배웠기 때문에 비효율적이긴 하지만 막무가내로 그냥 써보고 싶었다...
- 하지만 런타임 에러가 계속되어 다른 방법을 찾아보았다.

import hashlib

def get_value(x):
    encoded = str(x).encode()
    return hashlib.sha256(encoded).hexdigest() # 해시값을 key 대신 value로 사용

def save(x):
    hash_table[x-1] = get_value(x)

n = int(input())

for _ in range(n):
    nums = list(map(int, input().split(' ')))
    m = int(input())
    nums2 = list(map(int, input().split(' ')))
    hash_table = [0] * 100000

    for x in nums:
        save(x)
    
    for x in nums2:
        x_value = get_value(x)
        if hash_table[x-1] != x_value:
            print(0)
        else:
            print(1)



2. set 함수의 힌트를 얻다! (성공)
  - 왜 런타임 에러가 계속 나는지 궁금해서 찾아보던 중, set 함수에 대한 힌트를 얻어 구현해봤더니 성공했다!

n = int(input())
base_nums = set(map(int, input().split(' ')))
m = int(input())
compare_nums = list(map(int, input().split(' ')))

for n in compare_nums:
    if n not in base_nums:
        print(0)
    else:
        print(1)
      

'> 알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글

1427-소트인사이드 (python)  (0) 2020.10.10
2750-수 정렬하기 (python)  (0) 2020.10.10
19/09- 주로 런타임에러가 발생하는 경우  (0) 2020.10.06
10930-SHA-256 (python)  (0) 2020.10.06
5397-키로거 (python)  (0) 2020.10.03

댓글