[ Code Kata ] 문자열 내 해당 글자 찾아서 index 반환하기

문제

문자와 문자열이 주어졌을때, "get_find" 함수는 주어진 문자열에서 함께 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

  • 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
  • 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
  • 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
  • find 함수를 사용하지 마세요.
    👇🏻 예시 결과
output = get_find('a', 'I am a hacker')
print(output) # --> 2

풀이

def get_find(char, str):
    num = 0

    # 없을 때
    if char not in str:
      return -1

    # 있을 때
    else:
      for i in str:
        if i == char:
          return num
        else:
          num += 1

👆🏻 내가 푼 것!
역시나 함수를 사용할 생각을 하지 못하고
충실하게 for, if로 노가다를 하고있는 아름다운 모습을 볼 수 있다^^

나랑은 다르게 다들 보다 간결하게, 파이썬 내장 함수를 사용해서
깔끔하게 풀어낸 것을 볼 수 있다
자..


index( )

    a = list(str)
    b = a.index(char)

    return b

👆🏻 다른분이 푼 것 1!

  • 매개변수로 받은 문자열을 리스트화 하면

    👆🏻 요로케 한글자씩 리스트 내에 담기는데
    이 리스트 내에서 내가 찾고자 하는 문자열 'char' 매개변수가 어느 순번에 있는지 index( )함수를 사용한뒤
    그대로 리턴해주면 되었던 것!

range( )

    for a in range(0, len(str))
      if str[a] == char:
        return a
      if char not in str:
        return -1

👆🏻 다른분이 푼 것 22!

  • 매개변수로 받은 문자열 길이만큼으로 각 매개변수 단어마다 range( ) 함수를 사용해서 각 문자열 내에서 for loop을 돌린다!
    만약 문자열 내에서 n번째 글자가 일치해야 할 문자열 'char'매개변수와 같다면
    그대로 리턴해주면 되는 것!

애초에 메서드 자체가 한 문자열만을 대상으로 호출되기 때문에,
해당 문자열의 글자 수만큼 반복하면서 그 안에 내가 원하는 단어가 있는지 체크하면 되었던 것!

좋은 웹페이지 즐겨찾기