개발자 블로그

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

알고리즘/프로그래머스

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

hayongwoon 2022. 4. 26. 12:09
더보기

문제 설명

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

제한 사항

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

입출력 예

seoulreturn
["Jane", "Kim"] "김서방은 1에 있다"

 

나의 풀이

def solution(seoul):
    answer = ''
    for idx, val in enumerate(seoul):
        if val == 'Kim':
            answer = f'김서방은 {idx}에 있다'
    return answer

해당 인덱스를 구하기 위해 enumerate를 사용해서 for문을 돌렸다. 하지만 python의 index함수를 사용하면 해당하는 값의 인덱스를 반환해준다. index 함수의 시간복잡도는 O(n)이다. 내가 인덱스를 구하기 위해 for문을 돌려 O(n)의 시간복잡도로 접근한 것과 차이는 없지만 코드의 간결성을 보면 훨씬 나은 방법이겠다. 

 

list - OperationExampleBig-ONotes

더보기
Index l[i] O(1)  
Store l[i] = 0 O(1)  
Length len(l) O(1)  
Append l.append(5) O(1)  
Pop l.pop() O(1) l.pop(-1) 과 동일
Clear l.clear() O(1) l = [] 과 유사
Slice l[a:b] O(b-a) l[:] : O(len(l)-0) = O(N)
Extend l.extend(…) O(len(…)) 확장 길이에 따라
Construction list(…) O(len(…)) 요소 길이에 따라
check ==, != l1 == l2 O(N) 비교
Insert ㅣ.insert(i, v) O(N) i 위치에 v를 추가
Delete del l[i] O(N)  
Remove l.remove(…) O(N)  
Containment x in/not in l O(N) 검색
Copy l.copy() O(N) l[:] 과 동일 - O(N)
Pop l.pop(i) O(N) l.pop(0):O(N)
Extreme value min(l)/max(l) O(N) 검색
Reverse l.reverse() O(N) 그대로 반대로
Iteration for v in l: O(N)  
Sort l.sort() O(N Log N)  
Multiply k*l O(k N) [1,2,3] * 3 » O(N**2)

 

Dict - OperationExampleBig-ONotes

더보기
Index d[k] O(1)  
Store d[k] = v O(1)  
Length len(d) O(1)  
Delete del d[k] O(1)  
get/setdefault d.method O(1)  
Pop d.pop(k) O(1)  
Pop item d.popitem() O(1)  
Clear d.clear() O(1) s = {} or = dict() 유사
View d.keys() O(1) d.values() 동일
Construction dict(…) O(len(…))  
Iteration for k in d: O(N)