본문 바로가기
Programming/Python

Python 응용문제 - 최대 최소값 구하기

by 슬픈 야옹이 2023. 1. 1.

이번에는 파이썬으로 최대, 최소값을 구하는 프로그램을 작성해본다.

 

단, 반복문은 사용하지 않는다.

 

사실 최대, 최소값을 구하려면 반복문을 사용해야 한다.

반복문을 사용하지 않으려면 정해진 개수의 데이터만 입력받아야 한다.

3개의 데이터를 입력받는 프로그램을 작성했다면 그 프로그램은 3개의 데이터에 대해서만 최대,최소를 구할 수 있다는 뜻이다.

 

그럼에도 반복문을 사용하지 않고 프로그램을 작성해보는 이유는 최대, 최소를 구하는 원리를 이해하기 위해서다.

이 원리를 이해하고 프로그램을 작성할 수 있다면, 프로그램에 주어지는 조건이 달라져도 어렵지 않게 프로그램을 작성할 수 있다.

예를 들어, 입력받는 데이터의 개수가 가변적이라면 여기서 작성한 로직을 반복문과 함께 응용하면 된다.

 

최대, 최소를 구하는 알고리즘은 데이터의 크기를 비교하는 연산을 통해 구현되므로 데이터 정렬 알고리즘을 포함한 다양한 알고리즘과 관계가 깊다.

 

이렇듯 프로그램의 작동 원리나 개념은 정말 다양한 곳에서 응용되기 때문에, 프로그래밍을 업으로 삼고자 한다면 프로그램의 작동 원리를 이해하고 응용하는 능력은 필수라고 할 수 있다.

 

 

이제 최대, 최소를 구하는 프로그램을 작성해보자. 먼저 데이터가 3개일 경우다.

n1 = int(input("숫자1 입력>>"))
n2 = int(input("숫자2 입력>>"))
n3 = int(input("숫자3 입력>>"))


if n1 < n2:
    n1, n2 = n2, n1

if n1 < n3:
    n1, n3 = n3, n1

if n2 < n3:
    n2, n3 = n3, n2


print("가장 큰 수:", n1)
print("가장 작은 수:", n3)

3개의 데이터에 대해 빠짐없이 서로 비교연산을 수행한다.

두 값을 비교한 후, 더 큰 값을 앞으로 옮기는 과정을 수행한다.

 

 

만약 데이터가 4개라면?

4개의 데이터에 대해 빠짐없이 서로 비교하면 되므로 4C2, 즉 6번의 비교연산을 수행하면 될 것이다.

n1 = int(input("숫자1 입력>>"))
n2 = int(input("숫자2 입력>>"))
n3 = int(input("숫자3 입력>>"))
n4 = int(input("숫자4 입력>>"))


if n1 < n2:
    n1, n2 = n2, n1

if n1 < n3:
    n1, n3 = n3, n1
    
if n1 < n4:
    n1, n4 = n4, n1

if n2 < n3:
    n2, n3 = n3, n2

if n2 < n4:
    n2, n4 = n4, n2
    
if n3 < n4:
    n3, n4 = n4, n3


print("가장 큰 수:", n1)
print("가장 작은 수:", n3)

 

이 로직을 그대로 반복문으로 구현하면 버블정렬 알고리즘이 된다.

 

다른 정렬 알고리즘도 비교 대상이나 기준이 달라질 뿐 크기를 비교해서 위치를 찾아가는 기본 원리는 동일하다.