코딩테스트

백준 for문 문제 - 최소, 최대 구하기(파이썬)

수연 (Suyeon) 2023. 11. 25. 02:22
반응형

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

10818번은 입력한 숫자들 중에서 최소, 최대를 찾아 출력하는 문제입니다. 그래서 저는 이중 for문을 사용해서 배열을 오름차순 정렬이 되도록 한 다음 인덱스 0번과 -1번을 출력할 생각이었습니다. 하지만 시간초과로 실패를 하게 되었습니다..

count = int(input())
arrList = list(map(int, input().split()))

for i in range(count):
    for j in range(i+1, count):
        if(arrList[i] > arrList[j]):
            temp = arrList[i]
            arrList[i] = arrList[j]
            arrList[j] = temp

print(arrList[0], arrList[-1])

 

그래서 알고리즘 책을 찾아보니 최대, 최소 찾는 문제는 따로 변수를 생성한 뒤 그 값을 비교하면서 그때그때 변수의 값을 변경해주면 되는 아주 간단한 방법이 있었습니다! 그래서 문제에 적용하고 코드를 수정했습니다.

count = int(input())
arrList = list(map(int, input().split()))
max = -1000000
min = 1000000

for i in range(count):
    if(max < arrList[i]):
    	max = arrList[i]
    if(min > arrList[i]):
    	min = arrList[i]

print(min, max)
728x90