[BOJ] 2607 - 비슷한 단어 (🥈 실버 3티어)
사용 언어: Python3
문제
풀이
나의 풀이
from copy import deepcopy
N = int(input())
word = input() # 기준 단어
lst = [input() for _ in range(N-1)] # 비교 대상
alpha = [0] * 91 # word를 기준으로 알파벳 표시한 것
for x in word:
alpha[ord(x)] += 1
cnt = 0 # 기준 단어와 비슷한 단어 수
for val in lst:
orig = deepcopy(alpha) # lst에 있는 단어들마다 실행해야 하니 원본을 변경하지 않도록 deepcopy
for x in val:
orig[ord(x)] -= 1
if orig.count(0) == len(orig): # 같은 구성
cnt += 1
elif orig.count(-1) == 1 and orig.count(0) + 1 == len(orig): # 한 문자를 뺀 경우
cnt += 1
elif orig.count(1) == 1 and orig.count(0) + 1 == len(orig): # 한 문자를 더한 경우
cnt += 1
elif orig.count(1) == 1 and orig.count(-1) == 1 and orig.count(0) + 2 == len(orig): # 한 문자를 다른 문자로 바꾼 경우
cnt += 1
else:
pass
print(cnt)
- 테스트 케이스: 성공
- 제출 결과: 성공
다른 풀이
N = int(input())
word = list(input()) # 리스트
cnt = 0
for _ in range(N-1):
tmp = 0
compare = word[:] # 기준 단어의 복사본
similar_word = input() # 비교 대상
for x in similar_word:
if x in compare:
compare.remove(x)
else: # 비교 대상의 각 알파벳이 기준 단어에 없을 때 +1
tmp += 1
if tmp < 2 and len(compare) < 2:
cnt += 1
print(cnt)
- 테스트 케이스: 성공
- 제출 결과: 성공
💛 개인 공부 기록용 블로그입니다. 👻