Til
Til 2024.03.13 알고리즘 파이썬
dini_dini
2024. 3. 13. 13:50
>>정수찾기
##오류코드##
def solution(num_list, n):
for num in num_list:
if num == n:
return 1
else :
return 0
위 코드대로 돌리면 첫번째 요소만 확인하고바로 리턴해버림
예시 )) num_list가 [1, 2, 3, 4, 5]이고 n이 3일 때, 함수는 1을 반환해야 하지만, 현재 코드는 첫 번째 요소인 1과 3을 비교하여 0을 반환
위의 코드처럼 쓰고 싶다면
def solution(num_list, n):
for num in num_list:
if num == n:
return 1
return 0 #리턴이 for문 밖에 있어야함
이렇게 수정하면 모든요소를 확인후 n을 발견하지 못했을때만 0 을 반환
리턴이 포문 밖에 있어야 넘리스트 한바퀴 다돌고 정확한 값을 얻을수 있음
더 쉽게 수정한 코드
\
def solution(num_list, n):
if n in num_list: #만약 엔이 리스트안에 있다면
return 1
else :
return 0
>>뒤에서 5등까지
def solution(num_list):
num_list.sort()
return num_list[:5] #처음부터 5번째까지 추출
오류내면서 헷갈리는것들
코드 | 설명 | 결과 |
num_list.sort() return num_list[1:6] #오류코드 |
원본리스트 num_list를 제자리에서 정렬 두번째에서 여섯번째를 반환 |
원본리스트가 변경됨 2번째부터 6번째 반환 |
sorted(num_list[1:6]) #다른방법 |
num_list의 인덱스 1부터 5까지의 부분리스트만 추출하여 반환 | 새로운 리스트반환 원본리스트는 동일 원하는 범위의 리스트가정렬되어 반환 |
표기방식마다 들어가는숫자가 달라서 너무헷갈림ㅇㅇ
솔트와 솔티드가 달라서 생기는 문제인것같음
sort() 메소드를 사용할 경우 정렬된 리스트를 기준으로 인덱스가 조정되고, sorted() 함수를 사용할 경우 원본 리스트의 순서를 유지한 채로 정렬된 리스트를 반환