Study Anything ๐Ÿง

438. Find All Anagrams in a String ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ ํ’€์ด/LeetCode

438. Find All Anagrams in a String

์†” 2022. 2. 2. 23:39

#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์ด ์žˆ๋Š”๋ฐ

์ด๋ฒˆ ํ’€์ด์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์— ํ’€์–ด๋ณผ ๋•Œ๋Š” ์ด ๋‘˜์— ํฌ์ธํŠธ๋ฅผ ๋‘๊ณ  ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

 

 

 

 

728x90

'์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ ํ’€์ด > 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
Comments