본문 바로가기
Study/Coding Test

[백준] 2470 - 두 용액 Python

by 들숨날숨흡 2023. 10. 11.
728x90

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

 

2470번: 두 용액

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

www.acmicpc.net

(1) 오답 코드

import sys

input = sys.stdin.readline

N = int(input())
liquid = list(map(int, input().split(" ")))

liquid.sort()

start = 0
end = N - 1

answer = abs(liquid[start] + liquid[end])
liquid_answer = [liquid[start], liquid[end]]

while start <= end:
    ans = liquid[start] + liquid[end]
    if abs(ans) <= answer:
        liquid_answer = [liquid[start], liquid[end]]
        answer = abs(ans)
    if ans < 0:
        start += 1
    else:
        end -= 1

liquid_answer.sort()

for i in liquid_answer:
    print(i, end = " ")

맞왜틀 맞왜틀을 외치면서 어디가 틀렸을까 고민을 했다. 근데 문제 조건 중에 용액을 혼합해서 한다고 나와있는데,

while start <= end:

등호를 이렇게 표시하면 혹시라고 하나의 용액만을 섞는 경우가 발생한다. 그래서 이걸 고쳐줬더니 맞았다.

 

(2) 정답 코드

import sys

input = sys.stdin.readline

N = int(input())
liquid = list(map(int, input().split(" ")))
liquid.sort()

start = 0
end = N - 1

answer = abs(liquid[start] + liquid[end])
liquid_answer = [liquid[start], liquid[end]]

while start < end:
    ans = liquid[start] + liquid[end]
    if abs(ans) <= answer:
        liquid_answer = [liquid[start], liquid[end]]
        answer = abs(ans)
    if ans < 0:
        start += 1
    else:
        end -= 1

liquid_answer.sort()

for i in liquid_answer:
    print(i, end = " ")

 

 

 


https://github.com/sumini0516

 

sumini0516 - Overview

sumini0516 has 6 repositories available. Follow their code on GitHub.

github.com

 

728x90