728x90
✏️ 문제 링크
https://www.acmicpc.net/problem/15829
15829번: Hashing
APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정
www.acmicpc.net
❌ 실패....ㅠㅠ
문제를 제대로 읽지 않고, 힌트만 봤던 탓에
<-- 힌트
1234567891 보다 크면 안되는 조건을 제대로 보지 못했다.... ㅋㅋㅋ 데헷
❓ 정답은 ??
1) 짧지만 살짝 복잡한 ver
1
2
3
4
5
6
7
8
|
# 짧지만 조금 복잡한ver =======================
t= int(input())
test= str(input())
result=0
for i in range(t):
result+= (ord(test[i])%96)*31**i %1234567891
print(result %1234567891)
|
cs |
2) 길지만 이해하기 쉬운 ver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#[1] 딕셔너리 만들기====================
# chr(97)은 a이니까-> 딕셔너리에 {'a':1 } 형식
dic =dict()
i= 97
num= 1
while i!=123:
dic[chr(i)]=num
i+=1
num+=1
#[2] 값 계산하여 결과 도출하기===========
t= int(input())
test= str(input())
result= 0
cnt= 0
for i in range(t):
result+= (dic[test[i]]*31**cnt) %1234567891
cnt+=1
print(result%1234567891)
|
cs |
💯 풀이 과정
1) 짧지만 살짝 복잡한 ver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
t= int(input())
test= str(input())
result=0
# ord() 함수로 a~z까지의 아스키코드숫자를 불러오고
# 예) test의 첫번째 숫자가 b라면 ord(b) => 98이 나올거고
# --> 이 결과에 96 나누면 2도출
for i in range(t):
result+= (ord(test[i])%96)*(31**i) %1234567891
# 누적합을 하기 전 값에도 1234557891로 나눠주기
# 결과 값에 대해서도 1234567891보다 크면 안되니까
print(result %1234567891)
|
cs |
2) 길지만 이해하기 쉬운 ver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# 크게 <<2개의 part>> 로 코드식을 작성한다.
#[1] 딕셔너리 만들기====================
# chr(97)은 a이니까
dic =dict()
i= 97
num= 1
# -> 반복문 계속하다보면 {'a':1, 'b':2 ..... } 형식으로
while i!=123:
dic[chr(i)]=num
i+=1
num+=1
#[2] 값 계산하여 결과 도출하기===========
t= int(input()) #숫자 받기
test= str(input()) #문자 입력받기
result=0 # 출력 결과값
cnt=0 #
for i in range(t):
#누적합으로 넣기 전 1234567891로 나누기
result+= (dic[test[i]]*31**cnt) %1234567891
cnt+=1
# 결과 값에 대해서도 1234567891보다 크면 안되니까
print(result%1234567891)
|
cs |
😎 오늘의 한줄평
: 오랜만에 아스키코드를 사용하려니 함수도 헷갈리고 그랬는데, 확실히 공부하고 넘어가쟈
728x90
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[1547] 공 / 파이썬 (feat. remove 함수) (0) | 2022.03.12 |
---|---|
[1284] 집 주소 / 파이썬 (feat. 사용자 정의 함수 만들기) (0) | 2022.03.12 |
CLASS 2 / [1436] 영화감독 숌 / 파이썬 (해설 포함. 브루트포스 탐색) (0) | 2022.02.01 |
CLASS 2 / [2164] 카드2 / 파이썬 (0) | 2022.02.01 |
CLASS 2 / [11866] 요세푸스 문제 0 / 파이썬 (0) | 2022.02.01 |