alpyrithm_알파이리즘
[알고리즘][Python] 백준(BOJ) 1543 문서 검색_파이썬 본문
1543 문서 검색 https://www.acmicpc.net/problem/1543
문제 풀기 전 공부할 것 : 문자열, 브루트포스 알고리즘
풀이 1
<내용>
- doc와 word에 각각 입력을 받는다.
- res를 0으로 초기화하고 for문으로 doc 첫 단어부터 반복한다.
- 만약에 word가 doc에 들어있으면 cnt에 1을 더하고 idx를 현재 인덱스 + 단어 길이로 하여 반복문에서 그 다음 인덱스로 넘어갈 수 있도록 한다.
<코드>
doc = input()
word = input()
res = 0
for i in range(len(doc)):
cnt = 0
idx = -1
for j in range(i, len(doc)):
if j < idx:
continue
if doc[j:j+len(word)] == word:
cnt += 1
idx = j + len(word)
res = max(res, cnt)
print(res)
+) 너무 어렵게 생각한 것 같다. 저렇게 이중 for문을 돌지 않아도 모든 경우를 다 확인할 수 있다.
풀이 2
<내용>
- doc와 word에 각각 입력을 받는다.
- 문자열의 find는 문자나 문자열이 처음으로 나온 위치를 알려주는 함수로 문자나 문자열이 존재하지 않으면 -1을 반환한다.
- while문을 word가 나오지 않을 때까지 반복한다.
- word가 존재하면 res에 1을 더하고 doc을 재설정한다.
<코드>
doc = input()
word = input()
res = 0
while True:
idx = doc.find(word)
if idx == -1:
break
res += 1
doc = doc[idx+len(word):]
print(res)
풀이 3
<내용>
- doc와 word에 각각 입력을 받는다.
- 단어가 등장하는 수인 res와 인덱스인 idx를 0으로 초기화한다.
- while문으로 반복을 진행하는데 doc의 길이에서 idx를 뺀 값이 word의 길이보다 크거나 같을 때만 한다.
- doc의 현재 idx에서 단어의 길이만큼 더한 idx까지의 단어가 word와 같으면 res에 1을 더하고 idx에 단어의 길이만큼 더한다.
- 같지 않다면 idx에 1을 더해 진행한다.
<코드>
doc = input()
word = input()
res = 0
idx = 0
while len(doc) - idx >= len(word):
if doc[idx:idx+len(word)] == word:
res += 1
idx += len(word)
else:
idx += 1
print(res)
풀이 4
<내용>
- doc와 word에 각각 입력을 받는다.
- count는 문자열 중 문자의 개수를 세는 함수로 이를 이용해서 word가 등장하는 수를 찾을 수 있다.
<코드>
doc = input()
word = input()
print(doc.count(word))
풀이 5
<내용>
- doc와 word에 각각 입력을 받는다.
- doc를 word를 기준으로 split하면 word 기준으로 분리된 값들의 리스트가 나오기 때문에 1을 빼야 word의 수를 출력할 수 있다.
- 예를 들어, word 기준으로 분리된 값들이 3개라면 word가 2개 있기 때문에 3개의 부분으로 나뉘는 것이다.
<코드>
doc = input()
word = input()
print(len(doc.split(word))-1)
728x90
반응형
'Algorithm > 백준 알고리즘_Python' 카테고리의 다른 글
[알고리즘][Python] 백준(BOJ) 14490 백대열_파이썬 (0) | 2020.09.18 |
---|---|
[알고리즘][Python] 백준(BOJ) 1213 팰린드롬 만들기_파이썬 (0) | 2020.09.17 |
[알고리즘][Python] 백준(BOJ) 4999 아!_파이썬 (0) | 2020.09.15 |
[알고리즘][Python] 백준(BOJ) 11365 !밀비 급일_파이썬 (0) | 2020.09.15 |
[알고리즘][Python] 백준(BOJ) 5567 결혼식_파이썬 (0) | 2020.09.14 |
Comments