Baekjoon 2467. 용액

영슈·2023년 9월 14일
0

코딩테스트

목록 보기
1/4

문제 링크

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

문제 해석

  • 음수 인 알칼리 용액 값 과 양수인 산성 용액 값 존재
  • 두 값을 혼합 해 0에 가장 가까운 용액을 만들어서 그 두 값을 출력

문제 해결

  • left , right 포인터를 생성해 활용하자
  • 두 값의 합이 양수일 시 , right 를 이동 ( 무조건 값이 더 작아질 수 밖에 없으므로 )
  • 두 값의 합이 음수일 시 , left 를 이동 (무조건 값이 더 커질 수 밖에 없으므로 )
  • 최소값 일 시 , 배열에 그 값을 저장하자
    

슈도 코드

left = 0
right = array.length
temp = []
min = MAX_VALUE
while left<right:
	result = array[left]+array[right]
	if(abs(result)<min)
		min = abs(result)
		temp[0] = array[left]
		temp[1] = array[right]
	if(result>0)
		right--
	else
		left++

print(temp[0],temp[1])

제출 코드

count = int(input())

data = list(map(int,input().split()))


left = 0
right = len(data)-1
min = 2000000000
ary = []
while left<right:
    result = data[left]+data[right]
    if abs(result)<min:
        ary = [data[left],data[right]]
        min = abs(result)
    if result >0:
        right -=1
    else:
        left +=1

print(ary[0],ary[1])

사담

  • 단순히 , 이분 탐색을 알면 빨리 풀 수 있는 문제
  • 절댓값을 잘 활용해야 시간 안걸리고 해결 가능
Writed By Obisidan
profile
https://youngsu5582.life/ 로 블로그 이동중입니다~

0개의 댓글