파이썬 배열 원소의 최댓값 구하기

2022. 2. 4. 16:19컴퓨터 사이언스/Algorithm

반응형

배열을 사용하는 기본 알고리즘들

 

배열 원소의 최댓값 구하기

a = [13, 41, 45]

maximum = a[0]

if a[1] > maximum:
    maximum = a[1]

if a[2] > maximum:
    maximum = a[2]

print(maximum)

 


 

배열 원소의 최댓값을 구하는 함수 구현하기

from typing import Any, Sequence

def max_of(a: Sequence) -> Any:
    # 시퀀스형 a 원소의 최댓값을 반환
    
    maximum = a[0]
    for i in range(1, len(a)):
        if a[i] > maximum:
            maximum = a[i]
    return maximum

 

Devide & Conquer

from typing import Any, Sequence

def max_of(a: Sequence) -> Any:
    # 시퀀스형 a 원소의 최댓값을 반환
  • 뜻은 건네받는 매개변수 a의 자료형은 Sequence이며, 반환하는 것은 임의의 자료형인 Any이다는 것을 의미하는 어노테이션이다. 
  • 어노테이션은 그저 함수의 매개변수와 반환값을 알려주는 주석이며, 코드에 어떠한 영향도 미치지않음
    • Any는 제약이 없는 임의의 자료형을 의미
    • Sequence는 시퀀스형을 의미하며, 시퀀스형에는 리스트형, 바이트 배열형, 문자열 형, 튜플 형, 바이트 열 형이있다.

 

    maximum = a[0]
    for i in range(1, len(a)):
        if a[i] > maximum:
            maximum = a[i]
    return maximum
  • 맨 처음 maximum 변수에는 a[0]의 값이 들어있다.
  • for문을 통해서 a[0]부터 -> a[len-1]까지 가장 큰 값을 maximum 변수에 옮겨 담고 반환한다.  

 


 

배열 원소의 최댓값을 구하는 함수를 이용하여 프로그램 만들기

from typing import Any, Sequence

def max_of(a: Sequence) -> Any:
    
    maximum = a[0]
    for i in range(1, len(a)):
        if a[i] > maximum:
            maximum = a[i]
    return maximum 

if __name__ == '__main__':
    print('배열의 최댓값을 구하는 프로그램 시작!')
    num = int(input('원소 수를 입력하세요'))
    x = [None] * num

    for i in range(num):
        x[i] = int(input(f'x[{i}] 값을 입력하세요. :'))

    print(f'최댓값은 {max_of(x)}입니다!!')

 

 

Devide & Conquer

if __name__ == '__main__':
  • 위 if문은 해당 py파일인 algorithm.py를 직접 실행한 경우에만 즉 __name__과 '__main__'이 일치하는 경우에 참이되어서 if문 아래 코드들을 실행하게 된다.
  • 만약 다른 py에서 import 한 경우에는 거짓이 되므로 if문이 실행되지 않는다.

 

    num = int(input('원소 수를 입력하세요'))
    x = [None] * num
  • 입력 받은 원소 수를 num에 입력받고, x라는 리스트를 num의 크기로 만든다.

 

    for i in range(num):
        x[i] = int(input(f'x[{i}] 값을 입력하세요. :'))
  • 현재 비어있는 리스트 x의 각 인덱스에 값들을 넣어준다.

 

    print(f'최댓값은 {max_of(x)}입니다!!')
  • 위 함수를 이용하여, 최댓값을 구하고 그 값을 출력한다.

 

 


 

배열 원소의 최댓값을 구하는 함수를 다른 py에서 import하여 사용하기

 

from algorithm import max_of

print('End를 입력하면 종료됩니다.')

num = 0
x = []

while True:
    s = input(f'x[{num}]에 들어갈 값을 적어주세요 : ')
    if s == 'End':
        break
    x.append(int(s))
    num += 1

print(f'최댓값은 {max_of(x)}입니다!')

 

반응형