BOJ2697 비슷한 단어

randi65535·2020년 11월 25일
0
N = int(input())

## 첫번째 문자열을 입력
txt = input()
## 첫번째 문자열의 알파벳 빈도수를 저장
txt_alp = [0]*26
for i in range(len(txt)):
	txt_alp[ord(txt[i])-65] += 1
txt_len = len(txt)

elem = [input() for i in range(N-1)]

## 정답 조건에 맞는 단어의 갯수
ans = 0
for i in range(N-1):
	i_alp = [0]*26
	i_len = len(elem[i])
	
	## elem의 i번째 문자열의 알파벳 빈도수를 저장
	for j in range(len(elem[i])):
		i_alp[ord(elem[i][j])-65] += 1

	## 한개의 문자를 뺐을 때 diff는 1
	## 한개의 문자를 바꿨을 때 diff는 2
	## ## DOL -> DOG 인 경우 L일때 abs(1), G일 때 abs(1) 이므로 diff = 2
	diff = 0
	for j in range(26):
		diff += abs(txt_alp[j]-i_alp[j])
	
	## 단어를 1개 추가 abs(txt_len-i_len) <= 1
	## 단어를 1개 빼거나 바꿈 diff <= 2
	if abs(txt_len-i_len) <= 1 and diff <= 2:
		ans += 1
print(ans)
profile
unsinged int 8byte-1

0개의 댓글

관련 채용 정보