파이썬 SW문제해결 기본 - LIST 1
06 min max(SW문제)
06. Min Max
🎲문제 : 위 이미지를 클릭하여 SWEA 이동 -> 6차시 1일차 - min max
🥾문제 접근:
- 주어진 입력을 List에 담아 내장 함수 max(), min()을 이용하여 해결하는 방법이 있다.
📍 max(iterable) : 반복 가능한 자료형을 입력받아 최댓값을 return한다.
📍 min(iterable) : 반복 가능한 자료형을 입력받아 최솟값을 return한다.
- 가장 간단한 해결 방법이면서 앞서 배운 List를 활용할 수 있다.
List란? - [SWEA]파이썬 SW문제해결 기본 - LIST 1 : 알고리즘, 리스트
🎯 문제 해결:
(최종 코드는 제일 하단 참고)
첫 번째 시도
T = int(input())
for test_case in range(1, T + 1):
#1
input()
#2
lst_temp = list(map(int, input().split(" ")))
#3
result = max(lst_temp) - min(lst_temp)
print(f"#{test_case} {result}")
#1 양수의 개수 N을 input()을 통해 입력받았다. 그러나 이 알고리즘에서 N을 사용하지 않으므로 따로 변수에 저장하지 않았다. (5 ≤ N ≤ 1000)
#2 N개의 양수 ai가 주어지는 입력을 input()을 통해 한번에 받았다. 입력받은 값은 정수가 아닌 문자열 타입이다. 따라서 map(function, iterable, ...) 을 통해 정수로 변환 후 list([iterable])로 리스트 타입으로 변환했다. 이 과정을 순서대로 표현하면 다음과 같다.
1. ex) 입력 값 123 234 345 456이라고 가정
2. input() -> "123 234 345 456"을 입력 받는다. 이때 타입은 문자열이다.
3. input().split(" ") -> " "(space)를 기준으로 나눈 후 리스트로 저장한다. 즉 ["123", "234", "345", "456"]이 된다. 타입은 리스트이고 각 요소의 타입은 문자열이다.
4. map(int, input().split(" ")) -> 리스트 내 요소에 int()를 적용시킨다. 즉 문자열 요소가 정수형 요소로 바뀌며 타입은 map타입이 된다.
5. list(map(int, input().split(" "))) -> map 타입을 다시 list 타입으로 변환한다. 결과는 [123, 234, 345, 456]이 된다.
#3 입력받은 리스트에서 문제의 정답을 얻기 위해 최댓값에서 최솟값을 뺀 후 result 변수에 저장한다.
이 코드의 결과는? - ✅PASS
두 번째 시도
첫 번째 코드의 통과로 그대로 마칠 수도 있다. 그러나 개선사항으로 N개의 양수 ai를 입력받는 부분이 눈에 띄었다. 리스트의 요소를 변경할 필요가 없다. 그러므로 List보다 효율이 더 좋은, 그러나 요소를 변경할 수 없는 Tuple 형식을 쓰는게 어떨까 생각했다. 큰 효율은 없을 수 있지만... 그래도 시도해보았다.
T = int(input())
for test_case in range(1, T + 1):
input()
lst_temp = tuple(map(int, input().split(" ")))
result = max(lst_temp) - min(lst_temp)
print(f"#{test_case} {result}")
이 코드의 결과는? - ✅PASS
max(), min()과 같은 내부 함수들은 파이썬의 편리함을 더욱 빛나게 한다. 사실 이 문제를 C++이나 Java로 해결하려고 했다면 라이브러리를 쓰지 않는 한 최댓값과 최솟값을 구하는 함수를 따로 제작했어야 할 것이다. 그러나 그렇게 어려운 문제는 아닌 관계로, 또 파이썬에서 제공하는 기능들에 익숙해지자는 취지로 최댓값 최솟값 함수는 따로 구현하지 않았다. 혹시나 최댓값 최솟값 구하는 방법이 명쾌하게 떠오르지 않는다면 직접 구현해보는 것을 추천한다.
'SWEA() > Intermediate_Learn' 카테고리의 다른 글
[SWEA]4834. 파이썬 SW문제해결 기본 - LIST 1 : 숫자 카드 (0) | 2021.11.01 |
---|---|
[SWEA]4831. 파이썬 SW문제해결 기본 - LIST 1 : 전기버스 (0) | 2021.10.18 |
[SWEA]파이썬 SW문제해결 기본 - LIST 1 : Sort(정렬)-카운팅 정렬 (0) | 2021.10.16 |
[SWEA]파이썬 SW문제해결 기본 - LIST 1 : Sort(정렬)-버블 정렬 (0) | 2021.10.15 |
[SWEA]파이썬 SW문제해결 기본 - LIST 1 : Greedy Algorithm (0) | 2021.10.13 |