1 분 소요

사용 언어: 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)
  • 테스트 케이스: 성공
  • 제출 결과: 성공


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기