본문 바로가기
코딩/백준

알고리즘 - Python / 백준 - 14921번 : 용액 합성하기

반응형

14921번: 용액 합성하기 (acmicpc.net)

 

14921번: 용액 합성하기

홍익대 화학연구소는 다양한 용액을 보유하고 있다.  각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당

www.acmicpc.net

 


풀이

  • 오름차순으로 나열된 숫자들 중 2개를 더해서 가장 0에 가깝게 만드는 문제다.
  • 문제를 딱 봤는데 어디서 본문제 같다.

 

 

알고리즘 - Python / 백준 - 2467번 : 용액 (tistory.com)

 

알고리즘 - Python / 백준 - 2467번 : 용액

2467번: 용액 (acmicpc.net) 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차

ddggblog.tistory.com

 

 

  • 위의 용액 문제랑 99% 똑같다.
  • 다른 점이라면 답을 낼 때 , 용액은 두 수를 용액 합성하기 문제는 두 수를 더해서 출력하면 된다.
  • 풀이는 전형적인 투 포인터 문제다.
  • 위의 용액 문제 풀이글을 참고하자.
  • 용액은 정올 문제고 용액 합성하기는 홍대 코딩 대회 문제인데 정올 문제를 참고해서 만들어진 문제인 듯하다.

 

import sys
n = int(sys.stdin.readline())
c = list(map(int , sys.stdin.readline().split(" ")))
fp = 0; ep = len(c)-1; mins = (10**10) + 1
check_x , check_y = 0,0
while True:
    if mins == 0 or fp == ep:
        break
    if abs(mins) > abs(c[fp] + c[ep]):
        check_x = fp
        check_y = ep
        mins = c[fp] + c[ep]
    if c[fp] + c[ep] > 0:
        ep -= 1
    elif c[fp] + c[ep] < 0:
        fp += 1
print(c[check_x]+c[check_y])

 

 

 

 

반응형