오늘의 주제는 정렬!
문제
입력과 출력
코드
class Solution:
def findNonMinOrMax(self, nums: List[int]) -> int:
if len(nums)<=2:
return -1
else:
nums.sort()
return nums[1]
nums 배열에서 가장 작거나 가장 크지도 않은 수를 반환해야 한다.
그러므로 배열의 요소 개수가 2개이하일때는 -1을 리턴해준다
2개보다 많을 때는 nums 배열을 정렬한다.
이때 배열을 정렬하면 가장 작은수와 가장 큰수는 배열의 각 양쪽 끝에 위치하므로 그 사이에 있는 수들이 반환할 수 있는 값이 된다.
그런데 그 중 아무거나 반환하면 되므로 나는 그냥 인덱스1의 요소를 반환했다.
처음 코드는 이렇게 구성했다.
그냥 랜덤으로 양끝 요소를 빼고 반환해주면 될것 같다고 생각했는데
몇번 시도 끝에 깨달은 점은 아무래도 이 함수를 쓰면 안될 것 같다는 것...?
그래서 방법을 바꿔보기로 한다..!
일단 if else 문으로 전체를 넣어줘야할거 같은데 그 부분이 문제인가 싶어 수정해주었고
하지만,, 이것들만 문제인건 아닌 것 같아 보였다
num[1] 를 반환하면 자꾸 인덱스가 맞지 않다는 오류가 나길래 확인을 위해
nums[0]을 반환해봤다
문제가 없는 걸 보고 깨달은 점..
nums 배열이 2보다 작을 때 조건을 정의해 주지 않았다..
문제 예시대로 배열의 크기가 2일때만 생각했던 점이 문제였다 ㅎㅎ..
이것까지 수정해주니 드디어 완성...!!
아 그리고 몰랐는데 시간복잡도 분석도 이 프로그램 자체에서 해주더라..??
하하하하... 아직 멀었다
코드만 짜면 뭐하나.. 효율적으로 짜야지...
앞으로도 홧팅이다..