[알고리즘] Python -n개의 수를 입력 받아서 두 수를 뽑아 합이 가장 클 때는 ?
2022. 8. 2. 21:46ㆍETC/Algorithm
728x90
반응형
n개의 수를 입력 받아서 두 수를 뽑아 합이 가장 클 때는 ?
방법 1)
완전탐색으로 풀이할 때
조합을 이용하여 그중 합이 가장 큰 것을 출력한다
list = list(map(int, input().split()))
from itertools import combinations
sumlist = []
sum = 0
for combi in combinations(list, 2):
sum = combi[0] + combi[1]
sumlist.append(sum)
sumlist.sort(reverse=True)
print(sumlist[0])
-> 시간제한 1초, 입력 2<= N <= 1,000,000 일 경우
위의 방법을 사용하면 빅오표기법으로 보면 O(N제곱) -> 시간초과
"구현하기 전에 시간초과를 생각하고 해야 시간이 낭비되지 않음"
방법 2)
정렬한 후 가장 큰 두수를 뽑아 더해준다.
정렬(sort)하는 시간복잡도 = O(NlogN)
list = list(map(int, input().split()))
list.sort(reverse=True)
sum = list[0]+list[1]
print(sum)
방법 3)
for문을 사용하여 제일 큰거 구하고 2번째 for문 사용하여 두번째 큰 수 구한다
n + n -> O(N)
list = list(map(int, input().split()))
max1, max2 = 0
for item in list:
if max1 > item:
max1 = max1
else:
max1 = item
list.remove(max1)
for item in list:
if max2 > item:
max2 = max2
else:
max2 = item
print(max1+max2)
틀린 부분이나 수정사항, 좋은 방법 아시는 분은 알려주세욤....
728x90
반응형
'ETC > Algorithm' 카테고리의 다른 글
[알고리즘] Python -백준 #2739 (구구단) (0) | 2022.08.03 |
---|---|
[알고리즘] Python -백준 #1000 (A+B) (0) | 2022.08.03 |
[알고리즘] Kotlin -프로그래머스 알고리즘 문제 해설 *나머지 한 점 (0) | 2022.04.28 |
[알고리즘] Kotlin -프로그래머스 알고리즘 문제 해설 *자릿수 더하기 (0) | 2022.04.28 |
[알고리즘] Kotlin -프로그래머스 알고리즘 문제 해설 * 순열검사 (0) | 2022.04.28 |