이 문제에서는 하나의 문자열이 주어지며, 그 문자열 안에 특정 부분 문자열(substring)이 존재하는지 확인해야 합니다. 파이썬에서는 내장 함수인 find()를 사용하면 간단하게 해결할 수 있습니다.
알고리즘
1단계: 사용자로부터 문자열과 부분 문자열을 입력받아 각각 별도의 변수에 저장합니다. 2단계: 부분 문자열이 문자열 내에 존재하는지 확인합니다. 이때 파이썬의 내장 함수인 find()를 사용합니다. 3단계: 최종 결과를 출력합니다. 4단계: 프로그램을 종료합니다.
예제 코드
def check(str1, sstr):
if (str1.find(sstr) == -1):
print(sstr,"IS NOT PRESENT IN THE GIVEN STRING")
else:
print(sstr,"IS PRESENT IN THE GIVEN STRING")
# Driver code
str1 = input("Enter the string ::>")
sstr=input("Enter Substring ::>")
check(str1, sstr)
실행 결과
Enter the string ::> python program Enter Substring ::> program program IS PRESENT IN THE GIVEN STRING Enter the string ::> python program Enter Substring ::> programming programming IS NOT PRESENT IN THE GIVEN STRING
코드 설명
find() 함수는 문자열에서 부분 문자열이 처음으로 나타나는 인덱스를 반환하며, 부분 문자열이 존재하지 않으면 -1을 반환합니다. 따라서 반환값이 -1인지 여부를 검사하면 해당 부분 문자열의 존재 여부를 판별할 수 있습니다.
위 예제에서 "python program"이라는 문자열에는 "program"이 포함되어 있으므로 존재한다는 메시지가 출력되지만, "programming"은 포함되어 있지 않으므로 존재하지 않는다는 메시지가 출력됩니다.
참고: in 연산자를 사용한 대안
파이썬에서는 in 연산자를 사용해 더욱 직관적으로 부분 문자열의 존재 여부를 확인할 수도 있습니다.
if sstr in str1:
print(sstr, "IS PRESENT IN THE GIVEN STRING")
else:
print(sstr, "IS NOT PRESENT IN THE GIVEN STRING")
in 연산자는 불리언 값(True/False)을 반환하기 때문에 단순히 존재 여부만 확인할 때는 코드가 더 간결하고 가독성이 좋습니다. 반면, 부분 문자열의 위치(인덱스)까지 알아야 한다면 find() 함수를 사용하는 것이 적합합니다.