
더보기
순서가 없는 10개의 숫자가 공백으로 구분되어 주어진다, 주어진 숫자들 중 최대값을 반환하는 파이썬 여러가지 코딩
#1. max() 함수 사용 (가장 간단한 방법)
numbers_str = "10 5 20 8 15 30 25 3 12 18"
numbers_list = list(map(int, numbers_str.split()))
max_value = max(numbers_list)
print(max_value)
코드 분석
- numbers_str = "10 5 20 8 15 30 25 3 12 18"
- 숫자들을 공백으로 구분한 문자열로 저장합니다.
- numbers_list = list(map(int, numbers_str.split()))
- 이 줄이 코드의 핵심적인 부분입니다.
- numbers_str.split(): split() 메소드는 문자열을 공백(' ')을 기준으로 나누어 문자열 요소들을 가진 리스트로 만듭니다.
- "10 5 20 8..."는 ['10', '5', '20', '8', '15', '30', '25', '3', '12', '18']가 됩니다.
- map(int, ...): map() 함수는 리스트의 각 요소에 int 함수(정수 변환)를 적용합니다. 즉, 각 문자열 요소를 정수로 바꿉니다.
- map 객체에는 10, 5, 20, ...와 같은 정수들이 포함됩니다.
- list(...): map 객체는 직접 리스트로 사용할 수 없으므로, list() 함수를 사용하여 최종적인 정수 리스트를 생성합니다.
- 최종 결과: [10, 5, 20, 8, 15, 30, 25, 3, 12, 18]
- max_value = max(numbers_list)
- 파이썬의 내장 함수인 max()를 사용하여 리스트 numbers_list에 있는 모든 요소들 중에서 가장 큰 값을 찾습니다.
- 이 경우 30이 최대값이므로, max_value 변수에는 30이 할당됩니다.
- print(max_value)
- max_value 변수에 저장된 값, 즉 30을 화면에 출력합니다.
결론
이 코드는 문자열로 된 숫자를 정수 리스트로 변환하고, 파이썬의 max() 함수를 활용하여 그 리스트에서 가장 큰 값을 효율적으로 찾는 과정을 보여줍니다. max() 함수를 사용하면 반복문을 직접 작성하지 않아도 되기 때문에 코드가 훨씬 간결해집니다.
#2. 반복문 사용 (기본적인 알고리즘)
numbers_str = "10 5 20 8 15 30 25 3 12 18"
numbers_list = list(map(int, numbers_str.split()))
max_value = numbers_list[0] # 첫 번째 요소를 초기 최대값으로 설정
for number in numbers_list:
if number > max_value:
max_value = number
print(max_value)
코드 분석
- numbers_str = "10 5 20 8 15 30 25 3 12 18"
- 숫자들을 공백으로 구분한 문자열로 변수에 저장합니다.
- numbers_list = list(map(int, numbers_str.split()))
- 이 줄은 문자열을 정수 리스트로 변환하는 역할을 합니다.
- numbers_str.split(): 문자열을 공백(' ') 기준으로 나눠서 ['10', '5', '20', ...]와 같은 문자열 리스트를 만듭니다.
- map(int, ...): split() 결과로 나온 리스트의 각 문자열 요소를 **정수(integer)**로 변환합니다.
- list(...): map 객체를 [10, 5, 20, ...]와 같은 최종적인 정수 리스트로 변환합니다.
- max_value = numbers_list[0]
- max_value라는 변수에 리스트의 첫 번째 요소인 10을 초기 최대값으로 할당합니다. 이 값을 기준으로 나머지 숫자들과 비교하게 됩니다.
- for number in numbers_list:
- numbers_list의 모든 요소에 대해 반복을 시작합니다. 각 반복마다 현재 요소는 number 변수에 할당됩니다.
- if number > max_value:
- 현재 반복의 number가 현재까지의 최대값인 max_value보다 큰지 확인합니다.
- 예를 들어, number가 20일 때, 20 > 10은 참(True)이 됩니다.
- max_value = number
- 만약 if 조건이 참이면, max_value의 값을 현재 number의 값으로 업데이트합니다. 이제 max_value는 20이 됩니다. 이 과정은 리스트의 끝까지 반복되면서 max_value는 계속해서 가장 큰 값으로 갱신됩니다.
- print(max_value)
- 반복문이 모두 끝난 후, 최종적으로 max_value에 저장된 **가장 큰 값인 30**을 출력합니다.
이 코드는 수동으로 최대값을 찾는 기본적인 알고리즘을 구현한 것으로, 파이썬의 내장 함수 max()와 동일한 결과를 내지만 내부적인 동작 원리를 이해하는 데 유용합니다.
#3. 정렬 후 마지막 요소 반환
numbers_str = "10 5 20 8 15 30 25 3 12 18"
numbers_list = list(map(int, numbers_str.split()))
numbers_list.sort() # 리스트를 오름차순으로 정렬
max_value = numbers_list[-1]
print(max_value)
코드 분석
- numbers_str = "10 5 20 8 15 30 25 3 12 18"
- 공백으로 구분된 숫자들을 문자열 변수에 저장합니다.
- numbers_list = list(map(int, numbers_str.split()))
- split()을 사용하여 문자열을 공백 기준으로 나눈 후, map(int, ...)를 통해 각 요소를 정수로 변환하여 정수 리스트를 만듭니다.
- 결과: [10, 5, 20, 8, 15, 30, 25, 3, 12, 18]
3. numbers_list.sort()
- sort() 메소드는 리스트를 제자리에서 오름차순으로 정렬합니다. 즉, 리스트의 내용 자체를 변경합니다.
- 위 코드의 numbers_list는 정렬 후 [3, 5, 8, 10, 12, 15, 18, 20, 25, 30]로 바뀝니다.
4. max_value = numbers_list[-1]
- 파이썬에서 음수 인덱스는 리스트의 뒤에서부터 요소를 가리킵니다.
- [-1]은 리스트의 마지막 요소를 의미합니다. 오름차순으로 정렬된 리스트에서 마지막 요소는 가장 큰 값입니다.
- 따라서 max_value에는 30이 할당됩니다.
5. print(max_value)
- 변수 max_value에 저장된 값, 즉 30을 출력합니다.
이 방법은 리스트를 정렬하는 과정이 포함되어 있어, 앞서 제시된 max() 함수나 반복문을 사용하는 방법보다 연산 비용이 더 클 수 있습니다. 하지만 리스트를 정렬해야 하는 다른 작업이 필요한 경우에는 매우 효율적인 방법이 될 수 있습니다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 파이썬 2제곱, 3제곱, 4제곱 코딩 (0) | 2025.09.17 |
|---|---|
| 파이썬 일렬로 나열된 숫자의 자릿수 합 (0) | 2025.09.16 |
| 파이썬 주민등록번호를 분석하여 성별을 판별하는 프로그램 (0) | 2025.09.15 |
| 파이썬 주민등록번호 분리 (0) | 2025.09.14 |
| 파이썬 주어진 숫자가 짝수인지 홀수 인지 (0) | 2025.09.12 |