풀이
이번 문제는 python 내장 함수인 min(), max()를 사용하여 풀면 간단하나, 내장함수를 사용하고 for loop 을 사용하여 푸는 방법에 대해서도 같이 고민해 보았다.
두 방법을 제출하여 사용 메모리와 처리시간에 차이가 있는지도 확인해 보고 싶었다.
>>> 내장 함수를 사용하여 풀이한 방법:
N = int(input())
arr = list(map(int, input().split()))
print(min(arr),max(arr))
>>> for loop을 이용하여 전체를 다 비교하는 방법
N = int(input())
arr = list(map(int, input().split()))
min = arr[0]
max = arr[0]
for i in range(1, N):
if arr[i] > max:
max = arr[i]
elif arr[i] < min:
min = arr[i]
print(min, max)
>>> 백준 사이트 내 결과
제일 아래쪽(시간: 364ms)이 내장함수를 사용하여 제출한 풀이이며, 제일 위는 for loop을 이용하여 제출한 풀이의 결과이다.
리뷰
우선 내장 함수를 이용하는 것이 코드도 간단하고 더욱 빠르게 해결되는 점을 확인할 수 있다.
아무래도 for loop를 이요하여 전체를 다 비교하는 방식보다는 내장함수에서 그보다 빠르게 수행 가능한 binary search같은 방식을 채택하고 있는 듯하다.
그럼 python에서 같이 제공하는 method에는 어떤 차이가 있는지 궁금하여 테스트 해보기로 하였다.
sort()를 이용하여 정렬한 후, list의 최초의 값과 마지막 값을 출력하는 것은 어떤지 확인해 보자.
코드는 다음과 같다.
N = int(input())
arr = list(map(int, input().split()))
arr.sort()
print(arr[0],arr[N-1])
결과는 다음과 같다.
>>> 예상은 했지만 역시 sorting 하는데 시간이 꽤 많이 걸리는 점을 확인할 수 있었다.
결론
python의 장점을 살리기 위해선 지금 내가 필요한 작업에 적합한 내장함수를 최대한 활용하여 코드길이도 줄이고 가독성도 높이면 성능도 좋아질 가능성이 높다.
'[코테] Baekjoon 단계별 풀이 > 1차원 배열' 카테고리의 다른 글
[파이썬/Python] 백준 2562번 최댓값 (0) | 2024.06.29 |
---|---|
[파이썬/Python] 백준 10871번 X보다 작은 수 (0) | 2024.06.29 |
[파이썬/Python] 백준 10807번 개수 세기 (0) | 2024.06.29 |