파이썬 문자열 리스트에서 특정 단어 수를 세는 방법

조회수 7252회

"주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다."

여기서 주택이라는 글자의 수를 세야하는데 총 9개거든요

i = 0

Str = "주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다."

for a in Str:

    if "주택" in a:

        i = i + 1

print(i)

이렇게 하니까

그냥 주택이 들어가는 요소의 개수만 세서 3개밖에 안 나오더라고요

혹시 특정 문자의 개수를 세는 방법은 없을까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 어려울것은 없습니다만 빨리 가는 방법이 있으면 그것을 사용하면 그만인겁니다.

    바퀴를 또 만들필요는 없죠

    그런데 join, count 이런거 안쓰고 원하는 것 보면 str.find 이나 정규식도 쓰면 안된다 할 것 같습니다. 즉 자료구조나 알고리즘을 공부하는 것으로 판단됩니다.

    join은 반복하며 + 하면 되는 것이니 단순한 부분이고... count 는 검색 알고리즘이라는 조금 큰 주제입니다.

    https://en.wikipedia.org/wiki/String-searching_algorithm

    https://github.com/m00dy/string-matching-algorithms

    참고하여 학습해보시기 바랍니다.

  • 쉽게 생각하세요.

    문자열을 하나로 합쳐서 한번만 처리히면 간단합니다.

    Str = "주택의 주택이 주택을 했다.", "주택주택이 주택주택한건데 문제라도?", "저 주택은 해로운 주택이다."
    paragraph = ''.join(Str)
    print(paragraph.count('주택'))
    
    • 아 이거 join count 이런거 안 쓰고 반복문이랑 if문 넣어서 풀어야되는거라 괜히 더 어렵네요 ㅠ 알 수 없는 사용자 2018.10.22 23:11
    • 이 방식은 질문자분이 적으신 샘플에 한정하여 문제되지는 않지만, 만약 앞선 문장의 마지막 문자가 ‘주’로 끝나고 다음 문장의 첫 단어가 ‘택’으로 시작하면 결과가 달라질 수 있습니다. 영향을 주지 않을만한 seperator를 넣어야 할 듯 하네요. doodoji 2018.10.24 11:13
    • 음 그럴수도 있겠네요. 지금 제시된 문자열은 모두 ?. 같은 종결 문자를 사용하고 있어서 고려가 불필요하지만 '주'로 끝나고 '택'으로 시작하는 경우는 잘못된 카운트가 될 소지가 있네요 정영훈 2018.10.24 20:58

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)