๐Ÿงฉ Algorithm/SWEA

[SWEA] 1213. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 3์ผ์ฐจ - String (Python/D3)

devCloud 2024. 10. 22. 10:23
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

 


 

ํ’€์ด

sol.1

 

์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ ํŠน์ • ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

if sentence[i : i + len(word)] == word:
	result += 1
  • sentence์˜ i๋ฒˆ์งธ ์œ„์น˜๋ถ€ํ„ฐ i + len(word) ๊ธธ์ด๋งŒํผ ์ž˜๋ผ๋‚ธ ๋ถ€๋ถ„์ด word์™€ ๊ฐ™์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์ด word์™€ ๊ฐ™๋‹ค๋ฉด, ํ•ด๋‹น ์œ„์น˜์—์„œ word๊ฐ€ ๋ฐœ๊ฒฌ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋ฃจํ”„ ์ข…๋ฃŒ ์กฐ๊ฑด

if i == len(sentence) - len(word) + 1:
    break
  • i๊ฐ€ sentence์—์„œ ๋” ์ด์ƒ word๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์€ ๋ฌธ์ž์—ด์˜ ๋์—์„œ ๋” ์ด์ƒ word๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋Š” ์œ„์น˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

 

sol.2

ํŠน์ • ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ•  ํ›„ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

sen_split = sentence.split(word)

 

  • sentence๋ฅผ word๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. split() ํ•จ์ˆ˜๋Š” ์ง€์ •ํ•œ ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์žฅ์„ ๋‚˜๋ˆ„์–ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, sentence๊ฐ€ "abcabcabc"์ด๊ณ  word๊ฐ€ "abc"๋ผ๋ฉด, sentence.split(word)๋Š” ["", "", "", ""]๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

ํŠน์ • ๋ฌธ์ž์—ด ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ

result = str(len(sen_split) - 1)
  • sen_split ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•œ ํ›„, ๊ทธ ๊ธธ์ด์—์„œ 1์„ ๋บ€ ๊ฐ’์ด word์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋ถ„ํ• ๋œ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๋Š” word๊ฐ€ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋ณด๋‹ค 1 ๋” ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— 1์„ ๋นผ์ค๋‹ˆ๋‹ค.

 

 

 

Solution

sol.1

for tc in range(10):
    tc_num = int(input())
    word = input().strip()
    sentence = input().strip()
    result = 0
    i= 0
    while True:
        if sentence[i:i + len(word)] == word:
            result += 1
        i += 1
        if i == len(sentence) - len(word) + 1:
            break
    print("#%d %s" % (tc_num, result))

 

sol.2

for tc in range(10):
    tc_num = int(input())
    word = input().strip()
    sentence = input().strip()
    sen_split = sentence.split(word)
    result = str(len(sen_split) - 1)
    print("#%d %s" % (tc_num, result))

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

split()์œผ๋กœ ํŠน์ • ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ..! ๊ธฐ์–ตํ•ด๋‘์ž

 


 

728x90