요번 문제는 굉장히 쉬운 문제이다.
그런데 "제일 작은수"라는 말에서 문득 떠오른게 하나있다.
우리가 코딩테스트를 보다보면 가장 큰 수 혹은 작은 수, 선형구조상의 이들의 위치파악 등에 대한 이야기를 많이 하게된다. 쉬운개념이고 누구나 구현할 수 있지만 이번기회에 문제풀이와 동시에 정리해보려고 한다.
먼저, 문제풀이부터 해보자! Programmers Lv.1 "제일 작은 수"
1. 정수가 저장한 배열, arr에서 가장 작은 수를 제거하는 기능을 구현해야 한다.
2. 빈 배열인 경우 [-1]을 리턴한다.
3. [10]인 경우 [-1]을 리턴한다.
4. 일반적인 배열의 경우 가장 작은 수를 제거한 배열을 리턴한다.
핵심 알고리즘을 보자.
1. 매개변수 arr가 빈배열이거나 [10]인 경우
1-1. return [-1]
2. 1의 조건이외인 경우
2-1. 최솟값을 찾는다
2-2. 최솟값에 해당하는 index를 찾는다
2-3. 해당 index에 해당하는 원소를 제거한다.
2-4. 제거한 후 arr를 return한다.
이를 코드로 옮기면 다음과 같다.
여기서 필자가 이야기하고 싶었던 내용을 먼저 꺼내보려고 한다.
필자의 코드에서 아래 부분을 눈여겨보는것이 좋다.
del mylist[mylist.index(min(mylist))]
요 부분이 최솟값에 해당하는 원소를 특정하여 그 원소의 인덱스를 찾은뒤 삭제해주는 부분인 것이다.
원소가 1개이상 존재하는 선형 리스트에 대해서 최솟값, 최댓값의 인덱스를 찾는방식을 알아보자 :)
'''
선형 리스트에 대해서 최댓값, 최솟값을 가지는 인덱스를 찾은뒤 이를 삭제하는 코드를 다양하게 짜보자!
'''
list = [com1, com2, com3, ...]
# min()과 indeX()를 활용한 최솟값과 그 인덱스 서치
val_min = min(list)
val_min_index = list[list.index(min(list))]
# max()와 indeX()를 활용한 최댓값과 그 인덱스 서치
val_max = max(list)
val_max_index = list[list.index(max(list))]
# --------------------------------------------------------------------
import numpy as np
# numpy 모듈을 활용한 최솟값과 그 인덱스 서치
np_val_min_index = np.argmin(list)
np_val_min = np.min(list)
# numpy 모듈을 활용한 최댓값과 그 인덱스 서치
np_val_max_index = np.argmax(list)
np_val_max = np.max(list)
역시 numpy가 효율성이 좋다ㅎㅎ
'알고리즘 & 코딩테스트 > 코딩테스트' 카테고리의 다른 글
Programmers Lv1. "약수의 합" (0) | 2023.05.09 |
---|---|
Programmers Lv.1 "나머지가 1이 되는 수 찾기" (0) | 2023.05.09 |
Programmers Lv1. "콜라츠 추측" (0) | 2022.02.01 |
Programmers Lv1. "하샤드 수" (0) | 2022.01.29 |
Programmers Lv1. "x만큼 간격이 있는 n개의 숫자" (0) | 2022.01.29 |