반응형
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
- Doitvue.js입문
- Level1
- 카카오
- Level3
- 리트코드
- Medium
- typescript
- 프로그래밍
- javascript
- 웹프로그래밍
- LeetCode
- 동적계획법
- 코테연습
- python
- 파이썬
- sql
- OS
- CS
- dp
- C++
- 리액트
- 백준
- 고득점Kit
- Level2
- 프로그래머스
- 자바스크립트
- web
- VUE
- 배열
- react
Archives
- Today
- Total
[리트코드] 76. Minimum Window Substring 본문
반응형
76. Minimum Window Substring
Problem
Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window. If there is no such substring**, return the empty string "".
t를 만족하는 s의 최소 부분 문자열 찾기
Constraints:
- m == s.length
- n == t.length
- 1 <= m, n <= 105
- s and t consist of uppercase and lowercase English letters.
풀이
start는 고정 시켜놓고 end를 움직이면서 해당 window가 유효한지 (t의 원소를 다 가지고 있는지)를 확인한다.
만약 유효하다면 정답을 업데이트하고 유효하지 않을 때까지 start를 움직인다.
T = ABC
S = ADOBECODEBANC를 예로 나타내면 아래와 같다.
ADOBEC
DOBECO
DOBECOD
DOBECODE
DOBECODEB
DOBECODEBA
OBECODEBAN
BECODEBAN
ECODEBAN
CODEBAN
ODEBAN
ODEBANC
DEBANC
EBANC
BANC
ANC
class Solution:
def minWindow(self, s: str, t: str) -> str:
target_cnt = collections.Counter(t)
target_len = len(t)
start = 0
answer = ""
for end in range(len(s)):
# t의 원소일 경우
if target_cnt[s[end]] > 0 :
target_len -= 1
target_cnt[s[end]] -= 1
while target_len == 0:
if not answer or len(s[start:end + 1]) < len(answer):
answer = s[start:end + 1]
target_cnt[s[start]] += 1
if target_cnt[s[start]] > 0:
target_len += 1
start += 1
return answer
반응형
'코테 문제 풀이' 카테고리의 다른 글
[리트코드] 1578. Minimum Time to Make Rope Colorful (0) | 2022.04.12 |
---|---|
[리트코드] 1710. Maximum Units on a Truck (0) | 2022.04.12 |
[리트코드] 209. Minimum Size Subarray Sum (0) | 2022.04.11 |
[리트코드] 724. Find Pivot Index (0) | 2022.04.11 |
[리트코드] 283. Move Zeroes (0) | 2022.04.11 |
Comments