2607. 비슷한 단어

2024. 1. 20. 22:11·Algorithm/SW Expert Academy Review

https://www.acmicpc.net/problem/2607

 

2607번: 비슷한 단어

첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이

www.acmicpc.net

이해

  • 문자열 탐색을 통한 완전탐색 구현 문제
  • 해당 단어를 탐색하여 개수를 센 후, 이를 비교해도 시간이 충분하다.(O(1,000,000))

구현

  1.  각 단어별 구성하고 있는 단어와 그 개수를 저장할 dictionary 생성(편의를 위한 defaultdict 사용)
  2.  단어별 구성 단어와 개수를 저장
  3.  단어별 구성 단어 개수에서 기준 단어 구성 단어의 개수를 빼서 개수를 재구성(아래와 같이 표현)
    1. 해당 단어가 n개 존재 →  n
    2. 기준 단어와 비교 시 단어가 m개 없음 →  -m
  4.  기준 단어와의 차이가 절댓값이 2보다 크지 않고, 그 합이 1보다 작을 때만 개수 Check!

코드

# 2607 비슷한 단어
import sys
from collections import defaultdict
input = sys.stdin.readline


def solution(N:int, words:list) -> int:
    cnt = 0
    # 단어 개수를 저장할 dict 리스트 생성
    word = [defaultdict(int) for _ in range(N)]
    
    # 단어 정보 저장
    for i in range(N):
        for w in words[i]:
            word[i][w] += 1
    # 1. 해당 단어에서 기준 단어를 개수만큼 뺌
    # 2. 해당 단어의 개수가 2보다 작으면서, 개수를 모두 더 했을 때 절댓값이
    # 1보다 작으면 카운트
    for i in range(1, N):
        inw = 0
        absi = 0
        for j in word[0].keys():
            word[i][j] -= word[0][j]
        for j in word[i].values():
            inw += j
            absi += abs(j)
            if absi > 2:
                break
        else:
            if abs(inw) <= 1:
                cnt += 1

    return cnt 



if __name__ == "__main__":
    N = int(input())
    print(solution(N, [input().strip() for _ in range(N)]))
반응형

'Algorithm > SW Expert Academy Review' 카테고리의 다른 글

5249. 최소 신장 트리  (0) 2024.02.19
13994. 새로운 버스 노선  (0) 2023.03.06
4613. 러시아 국기 같은 깃발  (0) 2023.03.06
1210. [S/W 문제해결 기본] 2일차 - Ladder1  (0) 2023.03.06
1954. 달팽이 숫자  (0) 2023.03.06
'Algorithm/SW Expert Academy Review' 카테고리의 다른 글
  • 5249. 최소 신장 트리
  • 13994. 새로운 버스 노선
  • 4613. 러시아 국기 같은 깃발
  • 1210. [S/W 문제해결 기본] 2일차 - Ladder1
devSeongKu
devSeongKu
#FE_개발일지 #일상 #알고리즘
    • 분류 전체보기 (60)
      • Algorithm (41)
        • 개념 (8)
        • SW Expert Academy Review (22)
        • BaekJoon Review (11)
      • WEB (12)
        • HTML (5)
        • CSS (2)
        • JavaScript (1)
        • Django (4)
      • CS (3)
        • Git (2)
      • PROJECT (2)
        • 에러핸들링 (2)
      • 기타 (2)
  • 반응형
  • devSeongKu
    From The Present
    devSeongKu
  • 전체
    오늘
    어제
  • 링크

    • Github
  • 인기 글

  • 태그

    SWEA
    Baekjoon
    알고리즘
    스프린트프론트엔드8기
    취업까지달린다
    SW Expert Academy
    html
    Algorithm
    코드잇스프린트
    Python
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devSeongKu
2607. 비슷한 단어
상단으로

티스토리툴바