본문 바로가기

[SWEA] - Python

[SWEA] 1213 : [S/W 문제해결 기본] 3일차 - String python

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14P0c6AAUCFAYi&categoryId=AV14P0c6AAUCFAYi&categoryType=CODE&problemTitle=%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

아이디어

  • string.find(target)함수를 활용한다. (string: 탐색할 문자열, target: 포함되어 있는지 확인할 문자열)
    • target이 string에 포함되어 있다면 target이 시작되는 위치의 인덱스를
    • 그렇지 않으면 -1을 반환한다.
  • target이 몇개나 들어있는지 세는 변수 cnt를 0으로 초기화한다.
  • string.find(target)이 -1이라면 cnt를 출력하고
  • 그렇지 않으면 cnt를 1 증가시킨다.
  • string을 target이 포함된 부분의 뒷부분으로 업데이트한다.

 

코드

for i in range(1, 11):
    # 테스트케이스의 번호.
    # for문의 i를 이용할 거라 그냥 입력만 받고 저장하지 않았다.
    int(input())
    target = input()
    s = input()
    cnt = 0
    while len(s)>=len(target):
        idx = s.find(target)
        if idx==-1:
            break
        else:
            cnt +=1
            s = s[idx+len(target):]
    print("#%d %d" %(i, cnt))