본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2473 세 용액

by Alan_Kim 2023. 4. 24.
728x90
반응형

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

 

2473번: 세 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상

www.acmicpc.net

 

문제 해결

  • 전형적인 이분탐색 문제 (세 원소의 합이 C(상수) 일때 세 원소를 구하는 문제)
  • 가장 작은 수를 고정시키고 나머지 두 수를 이분탐색으로 구하는 문제
  • 그런데 python3에서는 시간초과가 난다...ㅜㅜ(pypy3에서는 잘 풀림) 근데 다른 분들도 이렇게 많이 푼듯?

 

CODE

import sys
input = sys.stdin.readline
INF =sys.maxsize
n = int(input())
A = list(map(int, input().split()))
A.sort()
target = INF
answer = [-1,-1,-1]
for i in range(n-2):
    start = i+1
    end = n-1
    while start<end:
        if abs(A[i]+A[start]+A[end]) < abs(target):
            target = A[i] + A[start] + A[end]
            answer[0], answer[1], answer[2] = A[i], A[start], A[end]
        if A[i]+A[start]+A[end] >0:
            end -= 1
        elif A[i]+A[start]+A[end] <0:
            start += 1
        elif A[i]+A[start]+A[end] ==0:break
print(*answer)

 

유사문제

https://thought-process-ing.tistory.com/252

 

[python] 백준 3151 합이 0

https://www.acmicpc.net/problem/3151 3151번: 합이 0 Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀

thought-process-ing.tistory.com

 

728x90
반응형

댓글