JSITCLUB

파이썬 - 프로그래머스 - 서울에서 김서방 찾기 본문

파이썬/문제풀이

파이썬 - 프로그래머스 - 서울에서 김서방 찾기

jsitclub 2020. 1. 2. 10:54

프로그래머스 level 1

    문제 설명

    String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

    제한 사항

    • seoul은 길이 1 이상, 1000 이하인 배열입니다.

    • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.

    • Kim은 반드시 seoul 안에 포함되어 있습니다.

    입출력 예

    seoul

    return

    ["Jane", "Kim"]

    "김서방은 1에 있다"

     

     

    코딩테스트 연습 - 서울에서 김서방 찾기

    String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제

    programmers.co.kr

    풀이 및 코드

    문제요약 

    리스트값에서 "Kim"이라는 문자열의 위치(인덱스)값을 찾아 원하는 문자열로 리턴하는 문제 입니다.

    문제해설 

    먼저 문제에서 배열이라고 이야기 하는 부분은 파이썬의 리스트라고 생각하고 푸시면 되겠습니다.

    이 문제는 리스트에서 값을 검색하는 대표적인 문제로 리스트를 반복하면서 조건에 맞는 값을 찾는 문제 입니다. 앞으로 문제를 풀면서 검색하는 일이 수 없이 나올테니 잘 익히고, 자꾸 반복해 익숙하게 하시기 바랍니다.

    반복은 리스트의 길이만큼만 반복하기때문에 for문, 문제의 결과에 인덱스값이 필요하기 때문에 range()함수 를 이용하겠습니다.

    1. 요소들을 무조건(조건문 없이) 찍어 봅니다.

     

    2. 여기에 우리가 원하는 조건을 붙여봅니다.

    코드에서 i에는 0 부터 (seoul의 길이-1)까지의 수가 순서대로 들어갑니다. 그러므로 반복이 진행됨에 따라 seoul[i]값은 seoul의 0번째 값, seoul의 1번째 값 ... 이 되는 것입니다. 그것들을 차례로 비교하다가 값이 "Kim"이 되면 출력 했으니 당연히 출력 될때의 i가 "Kim"의 위치가 됩니다. 

    여기까지 하면 거의 다 해결 되었습니다. 찾아낸 i로 결과 문장을 만들어 return 해주면 됩니다.

    def solution(seoul):
        answer = ''
        for i in range(len(seoul)):
            if seoul[i]=="Kim":
                answer= "김서방은 "+str(i)+"에 있다."
                break
            
        return answer

     

    다른 방법으로는 리스트의 index() 메서드를 사용하는 간단한 방법도 있습니다. 하지만, 다른 언어에서도 사용할 수 있는 위의 방법을 먼저 충분히 익히기 바랍니다.

     

    결과코드 

    def solution(seoul):
        
        return "김서방은 " + str(seoul.index("Kim"))+ "에 있다"
    Comments