일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 쉘스크립트
- Identity and access management
- MFA
- 파이썬
- 프로그래머스
- AWS자격증
- CCA131
- 클라우드자격증
- 클라우데라자격증
- 빅데이터실무자격증
- RDBMS
- sql자격증
- 빅데이터
- SQL
- hadoop
- CCAAdministrator
- mysql
- 코딩테스트
- AWSCloudPractitioner
- Multi Factor Authentication
- SQLD
- 리눅스
- hive
- EC2
- IAM
- 하둡
- 데이터베이스
- CLF-01
- programmers
- 클라우드컴퓨팅
- Today
- Total
Sherry IT Blog
[programmers]리스트에서 원소 찾아내기 본문
문제 설명
인자로 주어지는 리스트 L 내에서, 또한 인자로 주어지는 원소 x 가 발견되는 모든 인덱스를 구하여 이 인덱스들로 이루어진 리스트를 반환하는 함수 solution 을 완성하세요.
리스트 L 은 정수들로 이루어져 있고 그 순서는 임의로 부여되어 있다고 가정하며, 동일한 원소가 반복하여 들어 있을 수 있습니다. 이 안에 정수 x 가 존재하면 그것들을 모두 발견하여 해당 인덱스들을 리스트로 만들어 반환하고, 만약 존재하지 않으면 하나의 원소로 이루어진 리스트 [-1] 를 반환하는 함수를 완성하세요.
예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 72 인 경우의 올바른 리턴 값은 [1, 3] 입니다.
또 다른 예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 83 인 경우의 올바른 리턴 값은 [2] 입니다.
마지막으로 또 다른 예를 들어, L = [64, 72, 83, 72, 54] 이고 x = 49 인 경우의 올바른 리턴 값은 [-1] 입니다.
힌트 1: 리스트의 index() 메서드와 리스트 슬라이싱을 활용하는 것이 한 가지 방법이 됩니다. 리스트 슬라이싱은 아래와 같이 동작합니다.
L = [6, 2, 8, 7, 3] 인 경우
L[1:3] = [2, 8]
L[2:] = [8, 7, 3]
L[:3] = [6, 2, 8]
힌트 2: 리스트의 index() 메서드는, 인자로 주어지는 원소가 리스트 내에 존재하지 않을 때 ValueError 를 일으킵니다. 이것을 try ... except 로 처리해도 되고, "if x in L" 과 같은 조건문으로 특정 원소가 리스트 내에 존재하는지를 판단해도 됩니다.
*테스트 케이스
*내가 제출한 정답
def solution(L, x):
answer = []
for i in range(len(L)):
if x == L[i]:
answer.append(i)
if x not in L: #리스트안에 x값이 없을 경우
answer=[-1]
return answer
>> 첫번째 답은 for문안에서 리스트안에 x가 없을때까지 실행하는 로직이라 O(n2) 시간복잡도가 나오기때문에 비효율적인 로직임ㅎㅎㅠ
>> index슬라이싱을 이용해서 비교해서 해볼려했는데 while문을 사용하게되니 시간소요가 많이 걸려서 다른분의 코드를 참고해서
index값을 기준으로 비교해보았다
*두번째 정답
def solution(L, x):
answer = []
for index,i in enumerate(L): #enumerate함수를 이용해서 L리스트의 인덱스와 값을 알아내기
print(index,i) #index는 배열 리턴값,i는 리스트의 값
if i == x : #입력받은 x값과 리스트의 i값이 값으면 index값 추가
answer.append(index)
if len(answer) == 0 : #answer값이 없으면 같은 값이 없기 때문에 -1 출력
answer.append(-1)
return answer
return answer
'Python > coding test_Algorithm' 카테고리의 다른 글
기본적으로 알아야하는 알고리즘 목록 (0) | 2021.11.03 |
---|---|
[programmers]이진탐색 (0) | 2021.09.17 |
[programmers]정렬된 리스트에 원소 삽입_삽입정렬 (0) | 2021.09.15 |
[programmers]리스트 원소와 합 (0) | 2021.09.15 |
[programmers]정렬>K번째수_파이썬 정답 (0) | 2021.09.14 |