Study Anything ๐ง
438. Find All Anagrams in a String ๋ณธ๋ฌธ
#HashTable #String #SlidingWindow
๋ ๋ฌธ์์ด s์ p๊ฐ ์ฃผ์ด์ง๋ค. ์ด ๋ p์ ๋ชจ๋ ๋ฌธ์๊ฐ ์ฌ์ฉ๋ s์ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌ์คํธ๋ก ๋ฐํํ๋ค.
๋จ, ๋ฐํํ๋ ๋ฆฌ์คํธ ์์ ์์ ์์๋ ์๊ด์ด ์๋ค.
* ์ ๋๊ทธ๋จ(Anagram)์ด๋?
๋จ์ด๋ ๊ตฌ์ ๊ธ์๋ฅผ ์ฌ๋ฐฐ์นํ์ฌ ๋ง๋ ๋จ์ด๋ ๊ตฌ๋ฌธ์ผ๋ก, ๋ชจ๋ ๊ธ์๋ฅผ ํ ๋ฒ์ฉ๋ง ์ฌ์ฉํ๋ค.
์์:
(Input) s = "cbaebabacd", p = "abc"
(Output) [0,6]
Trial 1 : Python3, 22/02/02
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
result = []
psorted = sorted(p)
for i in range(len(s)):
ssorted = sorted(s[i:i+len(p)])
if ssorted == psorted:
result.append(i)
return result
ํ์ด:
p์ ๋ชจ๋ ๋ฌธ์๊ฐ ํฌํจ๋์ด์ผ ํ๋ฉฐ, s ์์์ p์ ๋ฌธ์๊ฐ ์ฌ์ฉ๋๋ ์์๊ฐ ์ ํด์ ธ์์ง ์๊ธฐ ๋๋ฌธ์
์ผ๊ด์ฑ์ ์ํด์ ๋น๊ต์ ํ์ํ ๋ถ๋ถ๋ค์ ์ ๋ ฌํด์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
s ์์์ ํ์ํ ๋ถ๋ถ์ ์ป๊ธฐ ์ํด์ ๋ฌธ์์ด ์ฌ๋ผ์ด์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
p ๋ฌธ์์ด์ ์ ๋ ฌํ๊ณ ์ฌ๋ผ์ด์ฑ์ผ๋ก s ๋ฌธ์์ด์์ ํ์ํ ๋ถ๋ถ์ ์ป์ ํ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ฌํ๋ค.
๊ทธ ๋ค์ ๋์ ๋น๊ตํ๊ณ ๊ฐ๋ค๋ฉด ๊ฒฐ๊ณผ๋ก ๋ฐํํ ๋ฆฌ์คํธ์ ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๋ค.
๋ฆฌ๋ทฐ:
ํ ์คํธ์ ์์๋ ํต๊ณผํ์ง๋ง ์ ์ฒด๋ฅผ ๋๋ ธ์ ๋ ํ์๋ฆฌ๋ฐ์ ๊ฑธ๋ ธ๋ค.
๋ฌธ์์ด์ ์ฌ๋ผ์ด์ฑํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ณด๋ ๋๋ฌด ๊ธด ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ํ์ ๊ฐ์๋ฐ
๋ณ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์์ ๋์ค์ ๋ค์ ํ์ด๋ณผ ์์ ์ด๋ค.
๋ฐํํ๋ ๋ฆฌ์คํธ ์์ ๊ฐ ์์๊ฐ ์๊ด์๋ค๋ ์กฐ๊ฑด์ด ๋ถ์๊ณ , ์นดํ ๊ณ ๋ฆฌ์ HashTable์ด ์๋๋ฐ
์ด๋ฒ ํ์ด์์๋ ์ฌ์ฉํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค์์ ํ์ด๋ณผ ๋๋ ์ด ๋์ ํฌ์ธํธ๋ฅผ ๋๊ณ ํ์ด๋ด์ผ๊ฒ ๋ค.
'์๊ณ ๋ฆฌ์ฆ๋ฌธ์ ํ์ด > LeetCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1108. Defanging an IP Address (0) | 2022.02.10 |
---|---|
438. Find All Anagrams in a String - Trial 2 (0) | 2022.02.03 |
1305. All Elements in Two Binary Search Trees (0) | 2022.01.27 |
520. Detect Capital (0) | 2022.01.24 |
1672. Richest Customer Wealth (0) | 2022.01.23 |