๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ Algorithm/์•Œ๊ณ ๋ฆฌ์ฆ˜-Python

[์•Œ๊ณ ๋ฆฌ์ฆ˜/Python] BOJ 1543 ๋ฌธ์„œ ๊ฒ€์ƒ‰

by Danna 2021. 4. 22.
728x90
728x90
 

1543๋ฒˆ: ๋ฌธ์„œ ๊ฒ€์ƒ‰

์„ธ์ค€์ด๋Š” ์˜์–ด๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์–ด๋–ค ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์–ด๋–ค ๋‹จ์–ด๊ฐ€ ์ด ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€ ์„ธ๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์„ธ์ค€์ด์˜ ํ•จ์ˆ˜๋Š” ์ค‘๋ณต๋˜์–ด ์„ธ๋Š” ๊ฒƒ์€ ๋นผ๊ณ  ์„ธ์•ผ ํ•œ

www.acmicpc.net

๐Ÿ’ก ์™„์ „ํƒ์ƒ‰(exhaustive search)
๋ฌธ์ œ์— ์“ฐ์—ฌ์ง„ ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์‹ค์ˆ˜ ์—†์ด ๋น ๋ฅธ ์‹œ๊ฐ„์•ˆ์— ์ž˜ ์งœ์•ผ ์‰ฌ์šด ๋ฌธ์ œ๋“ค์„ ํ’€์–ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธŽ ์ฒซ ๋ฒˆ์งธ ํ’€์ด

  • ๋ฌธ์„œ์—์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ๊ฒ€์ƒ‰ํ•ด์„œ ์ด ๋ช‡ ๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ๊ตฌํ•˜๊ธฐ
    • ์ž…๋ ฅ : ๋ฌธ์„œ(document), ๋‹จ์–ด(word)
    • ์ถœ๋ ฅ : ๋ฌธ์„œ์— ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ  ๋‚˜ํƒ€๋‚˜๋Š” ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜
  • ๋ฌธ์„œ์˜ ์ „์ฒด๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋‹จ์–ด๊ฐ€ ๋‚˜ํƒ€๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค.
    • ๋‹จ์–ด๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ, ๊ทธ ๊ตฌ๊ฐ„์—์„œ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค(i) ๋ฅผ ๋‹จ์–ด์˜ ๊ธธ์ด๋งŒํผ ์ฆ๊ฐ€์‹œ์ผฐ๋‹ค.
    • ๋‹จ์–ด๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ ์ธ๋ฑ์Šค์—์„œ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค(i) ๋ฅผ 1๋งŒํผ ์ฆ๊ฐ€์‹œ์ผฐ๋‹ค.
from sys import stdin
input = stdin.readline

document = input().strip()
word = input().strip()
n = len(word)
i = 0
count = 0

while i < len(document):
    if document[i:i+n] == word:
        count += 1
        i += n
    else:
        i += 1

print(count)

 

โœ”๏ธŽ ๋‘ ๋ฒˆ์งธ ํ’€์ด (์ฐธ๊ณ ํ’€์ด)

  • ํŒŒ์ด์ฌ์—์„œ str.count(x) ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด์—์„œ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ์ˆ˜ ์žˆ๋‹ค.
from sys import stdin
input = stdin.readline

document = input().strip()
word = input().strip()

print(document.count(word))

 

  • ๋ณ€์ˆ˜ ์„ค์ • ์—†์ด input ํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ช…์€ ์“ฐ๋Š”๊ฒŒ ๋” ์ข‹์€๊ฑฐ๊ฐ™๋‹ค.
print(input().count(input()))

 

โœ”๏ธŽ Python count ํ•จ์ˆ˜

  • count ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
    • x: Text (๋ฌธ์ž์—ด)
    • start, end: ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค (int)
    • ๋ฐ˜ํ™˜๊ฐ’ : int (์นด์šดํŒ… ๊ฐœ์ˆ˜)
count(x: Text, start: Optional[int]=..., end: Optional[int]=..., /) -> int

 

  • count ํ•จ์ˆ˜๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • object: ์ฐพ์œผ๋ ค๋Š” ๊ฐ’
    • ๋ฐ˜ํ™˜๊ฐ’ : int (์นด์šดํŒ… ๊ฐœ์ˆ˜)
count(object: _T) -> int

 


์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ

728x90
728x90