728x90
반응형
https://www.acmicpc.net/problem/2295
2295번: 세 수의 합
우리가 x번째 수, y번째 수, z번째 수를 더해서 k번째 수를 만들었다라고 하자. 위의 예제에서 2+3+5=10의 경우는 x, y, z, k가 차례로 1, 2, 3, 4가 되며, 최적해의 경우는 2, 3, 4, 5가 된다. k번째 수가 최
www.acmicpc.net
문제 해결
- A[x]+A[y]+A[z] = A[k]를 보고 3개를 잡으려 하지말고 A[x]+A[y] =c= A[k]-A[z]로 바꿔서 생각해보려 하자.
- A[x]+A[y]=c로 가능한 c를 sample 집합에 넣는다.
- k를 가장 큰 n-1인덱스부터 0까지 차례로 고정시키면서 z를 0부터 k인덱스까지 보면서 A[k]-A[z] in sample을 확인하면서 있는 경우 바로 A[k]를 출력하며 문제를 끝낸다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
A = [int(input()) for _ in range(n)]
A.sort()
sample = set()
for x in A:
for y in A:
sample.add(x+y)
def solve():
for i in range(n-1,-1,-1):
for j in range(i+1):
if A[i] - A[j] in sample:
return A[i]
print(solve())
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 6198 옥상 정원 꾸미기 (1) | 2023.04.23 |
---|---|
[python] 백준 16401 과자 나눠주기 (0) | 2023.04.23 |
[python] 백준 17609 회문 (0) | 2023.04.23 |
[python] 백준 3649 로봇 프로젝트 (1) | 2023.04.22 |
[python] 백준 2589 보물섬 (1) | 2023.04.22 |
댓글