์ž๋ฃŒ๊ตฌ์กฐ/๐Ÿ‘‰์•Œ๊ณ ๋ฆฌ์ฆ˜ - 34

๋‚ด์šฉ

  1. ๊ธฐ๋ณธ ํƒ์ƒ‰ - ๊ธฐ์ดˆ

๋ฌธ์„œ ๊ฒ€์ƒ‰

๋ฌธ์„œ ๊ฒ€์ƒ‰

๋‘ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค.
์ฒ˜์Œ ๋ฌธ์ž์—ด์„ ๋ฌธ์„œ, ๋‘๋ฒˆ์งธ ๋ฌธ์ž์—ด์„ ๋‹จ์–ด๋ผ๊ณ  ํ• ๋•Œ,
๋ฌธ์„œ์—์„œ ๋ฌธ์ž์—ด์ด ๋ช‡๋ฒˆ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ๋“ฑ์žฅํ•˜๋Š”์ง€ ํšŸ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ฌธ์ œ,
โ€œababababaโ€
โ€œabaโ€
-> ababababa
๋งจ ์ฒ˜์Œ์— ababa์—์„œ {0, 1, 2 ๋ฒˆ์งธ ๊ธ€์ž} ๊ทธ๋ฃน๊ณผ,
{2, 3, 4 ๋ฒˆ์งธ ๊ธ€์ž} ๊ทธ๋ฃน์€ ์„œ๋กœ 2๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ ๊ฒน์น˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์ง€ ์•Š๋Š”๋‹ค.

๋ฌธ์„œ์˜ ๊ธธ์ด(d) 2500, ๋‹จ์–ด์˜ ๊ธธ์ด(w) 50 ์‹œ๊ฐ„์ œํ•œ 2์ดˆ/ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ 128MB

์™„์ „ํƒ์ƒ‰์œผ๋กœ $O(dw) = d*w = 125000$์ •๋„๋ฉด ๊ฐ€๋Šฅํ•˜๊ฒ ๋‹ค.

d = input()
w = input()
cnt = 0
i = 0
while i < len(d) - len(w) + 1:
    found = True
    for k in range(len(w)):
        if d[i + k] != w[k]:
            found = False
            i += 1
            break
    if found:
        i += len(w)
        cnt += 1
print(cnt)
  1. ๋ฌธ์„œ์˜ ์ฒซ ๊ธ€์ž๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์„ ํƒ
  2. ์„ ํƒํ•œ ๊ธ€์ž์˜ ํ•ด๋‹น ์œ„์น˜๋ถ€ํ„ฐ w์™€ ์ผ์น˜ํ•˜๋Š” ์ง€ ํ™•์ธ
  3. ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ผ์น˜ํ•˜๋Š” ์ˆ˜ + 1, w์˜ ๊ธธ์ด๋งŒํผ ๊ฑด๋„ˆ๋›ฐ๊ณ , ๋‹ค์Œ ๊ธ€์ž ์„ ํƒ, 2๋ฒˆ๋ถ€ํ„ฐ ๋ฐ˜๋ณต
  4. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๊ธ€์ž ์„ ํƒ, 2๋ฒˆ๋ถ€ํ„ฐ ๋ฐ˜๋ณต

๋ฌธ์„œ

์•ฝ๊ฐ„ ๋” ๋ณด๊ธฐ์ข‹์€ ์ฝ”๋“œ
๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ์Šฌ๋ผ์ด์‹ฑ์„ ํ†ตํ•ด ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

d = input()
w = input()
i = 0
result = 0
while len(d)  - i >= len(w):
    if d[i : i + len(w)] == w:
        result += 1
        i += len(word)
    else:
        i += 1
print(result)

์ƒˆ

์ƒˆ

์ตœ๋Œ€ 1,000,000,000 ์‹œ๊ฐ„์ œํ•œ 2์ดˆ

๋‹ค๋“ค ๋ฌธ์ œ์— ์ ํžŒ๋Œ€๋กœ ์ƒ๊ฐํ•˜๊ณ ,
์ด๊ฒŒ ์‹œ๊ฐ„์•ˆ์— ๋ ๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ• ํ…๋ฐ,
1+2+3+โ€ฆํ•˜๋‹ค๋ณด๋ฉด ๋น ๋ฅด๊ฒŒ ์ปค์ง„๋‹ค.

๊ฐ€์žฅ ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ ํฐ ์ฒซ ์‚ฌ์ดํด์—์„œ์˜ ์‹œ๊ฐ„(์ดˆ)๋ฅผ ๊ตฌํ•ด๋ณด์ž $1,000,000,000 = {n(n+1)\over2}$
$2,000,000,000 = n^2 + n$
$n \fallingdotseq 44721$

๋Œ€๋žต $O(\sqrt n)$์ •๋„ ๋‚˜์˜ค๊ฒ ๋‹ค.

n = int(input())
i = 1
t = 0
while n:
    if i <= n:
        n -= i
    else:
        i = 1
        n -= i
    i += 1
    t += 1
print(t)

์ƒˆ

๋ฒ ์ŠคํŠธ์…€๋Ÿฌ

๋ฒ ์ŠคํŠธ์…€๋Ÿฌ

ํŒ”๋ฆฐ ์ฑ…์˜ ์ด๋ฆ„ ๋ชฉ๋ก์„ ํ†ตํ•ด ๊ฐ€์žฅ ๋งŽ์ด ํŒ”๋ฆฐ ์ฑ…์˜ ์ด๋ฆ„์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

d = input()
w = input()
cnt = 0
i = 0
while i < len(d) - len(w) + 1:
    found = True
    for k in range(len(w)):
        if d[i + k] != w[k]:
            found = False
            i += 1
            break
    if found:
        i += len(w)
        cnt += 1
print(cnt)

๋ฒ ์ŠคํŠธ์…€๋Ÿฌ

๋งˆ์ง€๋ง‰

๋‚ด์šฉ

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ