https://www.acmicpc.net/problem/12780
문제분류
구현
문제분석
입력: 문자열 H 와 문자열 N
H안에 N이 몇번 출현하는지를 세야한다.
시도1
H를 한 글자씩 검사하면서 N의 첫글자가 등장하면
H와 N을 한글자씩 검사하는 방법을 생각했다.
하지만 이 경우 문자열을 하나씩 검사하는데 쓰이는 인덱싱하는 변수(i)를 관리하는 것이 헷갈렸다.
예를들어,
H가 INHAUNIVERSITY이고 N이 UNIV인 경우에는
i를 UNIV를 검사하는데 증가시키다가 끝나고 이어서 H의 E부터 검사하면 되지만 이런 알고리즘을 따를경우,
H가 AAAB 이고 N이 AAB인 경우에는
N과 일치하는지 검사가 끝난후 i가 H의 세번째 A를 가리키게 되서 틀리게 된다.
##실패한 코드
import sys
text = sys.stdin.readline().strip()
word = sys.stdin.readline().strip()
count = 0
i = 0
while i < len(text):
if text[i] == word[0]:
idx = i
j = 0
while text[idx] == word[j]:
idx += 1
j += 1
if j == len(word):
count += 1
break
i += 1
else:
i += 1
print(count)
시도2
파이썬의 문자열 처리하는 함수를 적극활용하기로 했다.
split()함수를 사용해서 H를 N을 기준으로 나누고, 그래서 만들어진 리스트의 요소 개수에서 -1을 하면
N의 개수가 나오게 된다.
import sys
text = sys.stdin.readline().strip()
word = sys.stdin.readline().strip()
l = list(text.split(word))
print(len(l) - 1)
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/node.js]10773번 제로 (0) | 2023.01.15 |
---|---|
[백준/Python] 14724번 관리자는 누구? (0) | 2023.01.15 |
[백준 / C++] 17263번 - Sort 마스터 배지훈 (0) | 2023.01.15 |
[BOJ/C] 12780 원피스 (0) | 2023.01.15 |
[백준/python] 17219 비밀번호 찾기 (0) | 2023.01.15 |