[99클럽 코테스터디 2기][Python/비기너] 32번째 문제: Neither Minimum nor Maximum

최민지·2024년 6월 20일
0
post-thumbnail

오늘의 주제는 정렬!

[Neither Minimum nor Maximum]

문제

입력과 출력

코드

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일때만 생각했던 점이 문제였다 ㅎㅎ..

이것까지 수정해주니 드디어 완성...!!

아 그리고 몰랐는데 시간복잡도 분석도 이 프로그램 자체에서 해주더라..??


하하하하... 아직 멀었다
코드만 짜면 뭐하나.. 효율적으로 짜야지...
앞으로도 홧팅이다..

profile
공부..일기....

0개의 댓글