[프로그래머스][파이썬] 숫자 찾기 - 문자열 (Level 0)

뻥튀기아이스크림·2025년 3월 20일
1
post-thumbnail

◽ 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120904

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

def solution(num, k):
    answer = 0
    str_num = str(num)
    str_k = str(k)
    
    if str_k in str_num:
        answer = str_num.index(str_k) + 1
    else:
        answer -= 1
        
    return answer
  • 두 정수를 문자열로 변환하고, in 연산자를 통해 있는지 확인했다.
  • 그리고 index() 함수로 인덱스를 받고, 우리는 1 부터 세니까 1 을 더해주었다.

◽ 다른 사람 풀이

def solution(num, k):
    answer = (str(num).find(str(k)) + 1)
    
    if answer == 0:
        answer = -1
        
    return answer
  • find() 함수를 통해 인덱스를 추출했고, 없으면 find() 반환값이 -1이 되니까 answer0 이 되버려서 -1 로 바꿔준 모습이다.

◽ 더 나아가기

  • 문자열에서 find()index() 함수를 통한 풀이였는데, 문자열이 있을때 둘 다 시작하는 인덱스를 반환하는 동작이 같다.
  • 하지만, 찾는 문자열이 없을 때 동작이 다르다.
  • find() 는 없는 경우 -1 을 반한하는 반면, index()ValueError 라는 예외를 발생시킨다.
  • 따라서, 반드시 문자열이 있어야 하는 경우를 제외하고는 find() 함수를 사용하는게 안전하다.
  • 그렇다고 index() 를 아예 문자열에 쓰면 안되는 것도 아니고, 예외 발생을 오히려 예외 처리를 통해 위 코드처럼 활용할 수 있으니 예외를 활용할 필요도 있어보인다.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글