Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- DP
- 싸피
- 맵
- 정수론
- 누적 합
- 수학
- 이분 탐색
- 에라토스테네스의 체
- 모던 JavaScript 튜토리얼
- 문자열
- 애드 혹
- 구현
- SSAFY
- BFS
- 슬라이딩 윈도우
- 트리
- DFS
- 해시 테이블
- 2357
- JavaScript
- 세그먼트 트리
- 그리디
- Python
- 투 포인터
- 브루트포스
- 13164
- 그래프
- 정렬
- 플로이드-워셜
- boj
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 7575 - 바이러스 (Python) 본문
아이디어
하나의 코드를 슬라이싱하여 길이가 K인 부분 코드들을 만들고 다른 코드들에 부분 코드가 포함되어 있는지 확인한다.
풀이
처음 입력 받는 코드의 길이를 M, 코드를 정수로 리스트 P에 받고, 나머지 코드들은 문자열로 리스트 code_list에 추가한다.
P를 길이가 K인 부분 코드로 슬라이싱하여 a에 문자열로 저장하고, b에는 반대로 뒤집은 코드 문자열을 저장한다.
code_list에 있는 코드들에서 a 또는 b가 모두 포함되어 있으면 YES, 그렇지 않으면 NO를 출력한다.
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
code_list = []
M = int(input())
P = list(map(int, input().split()))
for i in range(N-1):
input()
code_list.append(input())
for i in range(M-K+1):
a = ' '.join(map(str, P[i:i+K]))
b = ' '.join(map(str, P[i:i+K][::-1]))
for j in range(N-1):
if a not in code_list[j] and b not in code_list[j]:
break
else:
print('YES')
break
else:
print('NO')
'알고리즘' 카테고리의 다른 글
[BOJ] 4354 - 문자열 제곱 (Python) (0) | 2023.01.18 |
---|---|
[BOJ] 1913 - 달팽이 (Python, JavaScript) (0) | 2023.01.18 |
[BOJ] 11585 - 속타는 저녁 메뉴 (Python) (0) | 2023.01.16 |
[BOJ] 21918 - 전구 (Python, JavaScript) (0) | 2023.01.16 |
[BOJ] 16570 - 앞뒤가 맞는 수열 (Python) (0) | 2023.01.16 |
Comments