개발자 블로그
프로그래머스 - 서울에서 김서방 찾기 본문
더보기
문제 설명
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) |
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 약수의 합 (0) | 2022.04.27 |
---|---|
프로그래머스 - 소수 찾기 (0) | 2022.04.27 |
프로그래머스 - 문자열 내 마음대로 정렬하기 (0) | 2022.04.26 |
프로그래머스 - 2018카카오 블라인드 채용 [1차] 다트 게임 (0) | 2022.04.25 |
프로그래머스 - 1차 비밀지도 (0) | 2022.04.22 |