[파이썬] 백준 14425번 「문자열 집합」

2023. 12. 6. 13:29· 코딩테스트 - 백준
목차
  1. 문제
  2. 문제 분석
  3. 풀이 전략
  4. 코드
  5. 결과
  6. 고찰
728x90
반응형

문제

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

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

 

 

문제 분석

n과 m 을 입력받고 n개의 문자열이 들어있는 s집합에 m개의 다른 문자열들이 몇 개가 포함되어있는가(일치하는가)를 찾는 문제이다.

주의 해야할 점은 N의 범위는 최대 10000개, M의 범위도 최대 10000개 이므로, 둘 다 반복성이 있는 리스트 또는 튜플을 이용하게 된다면 M의 마지막 단어가 N에 포함되어 있지 않은 경우 이미 10000번째 까지 반복되어 왔는데, N을 10000번 더 돌려야하기 때문에 제한시간 2초내에 해당 문제를 풀기에는 시간초과가 발생할 것이다. 

 

 

 

풀이 전략

앞서 말했듯, 이중for문을 이용하게 되면 최악의 경우 10000*10000의 반복을 하기에 시간초과가 발생할 것이므로, 반복을 줄여야한다. 문자열 s의 경우에는 반복성이 없는 set() 집합을 이용하거나 딕셔너리 dict()를 사용하면 해당 집합 안에 어떠한 요소가 들어있는지 확인하는 시간복잡도는 O(1)이므로 시간을 굉장히 단축시킬 수 있다.

그러므로 n개의 요소를 가진 집합 s를 생성하고, m개의 단어들을 돌면서 입력받은 단어가 집합 s에 존재하는지 확인하여 존재하면 개수를 세기만 해주면 된다.

본인은 집합 set()을 이용하여 문제를 해결하였다.

 

 

 

 

코드

 

 

 

 

 

결과

 

 

고찰

처음에 풀었을 때는 집합 s에 ABCDE가 있고, ABC가 s에 존재하는지 확인했을 때 부분문자열도 개수에 포함되는 것으로 판단하여 이중for문으로 돌려서 확인하였는데 시간초과가 발생하였다. 그래서 문제 해석이 굉장히 중요하였다. 결국 그냥 일치하는 지만 확인하면 되는 문제였으므로 굉장히 간단하게 문제가 해결되었다.

set 함수의 시간복잡도는 O(1)이고, 집합과 집합, 순회 등에서는 해당 집합의 길이만큼(예외 존재) O(len(s)) 라는 것을 기억해두자. 굉장히 빠르게 어떤 요소가 존재하는지 파악할 수 있다.

728x90
반응형
저작자표시 비영리 (새창열림)

'코딩테스트 - 백준' 카테고리의 다른 글

[파이썬] 백준 11656번 「접미사 배열」  (1) 2023.12.08
[파이썬] 백준 1074번 「Z」  (4) 2023.12.07
[파이썬] 백준 2960번 「에라토스테네스의 체」  (2) 2023.12.05
[파이썬] 백준 1269번 「대칭 차집합」  (4) 2023.12.04
[파이썬] 백준 1475번 「방 번호」  (0) 2023.12.03
  1. 문제
  2. 문제 분석
  3. 풀이 전략
  4. 코드
  5. 결과
  6. 고찰
'코딩테스트 - 백준' 카테고리의 다른 글
  • [파이썬] 백준 11656번 「접미사 배열」
  • [파이썬] 백준 1074번 「Z」
  • [파이썬] 백준 2960번 「에라토스테네스의 체」
  • [파이썬] 백준 1269번 「대칭 차집합」
성밍쟁
성밍쟁
성밍쟁 공붕방
성밍쟁
너드인의 밤
성밍쟁
전체
오늘
어제
  • 분류 전체보기 (182)
    • 일상 (1)
    • 스펙업 (7)
      • 학회 (0)
      • 멋쟁이사자처럼 (2)
      • 2024 winter-study (5)
    • 코딩테스트 - 백준 (9)
    • 보안 스터디 (56)
      • 시스템 해킹 (10)
      • 리버스 엔지니어링 (0)
      • 웹 해킹 (38)
      • 암호학 (8)
    • bandit (15)
    • 웹 개발 (11)
    • 머신러닝 (0)
    • 데이터베이스 (9)
    • KnockOn (72)
    • DevOps (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • /bin
  • 1074
  • 11656
  • 1193
  • 2563
  • 3Des
  • 9613
  • AES
  • Alias

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
성밍쟁
[파이썬] 백준 14425번 「문자열 집합」
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.