푼 날짜 : 2024.09.05
푼 문제 : [2470] / 두 용액
사용한 언어 : python
푼 방법 :
항상 범위를 잘 확인해야한다.
위의 문제처럼 범위가 엄청나게 큰 경우 계산을 어떻게 하면 효율적으로 할지 잘 판단해야한다!!
이번 문제의 경우에는 음수값도 포함이 되며 0에 가까워야 하므로 절댓값이 가장 작아야 한다고 생각했다.
또한 인접값을 계산하는 것이 아니라 배열 내 두 요소를 고려하여 0에 가까운 값을 만드는 것이 핵심이므로 절댓값 기준으로 정렬을 하고 시작했다.
이렇게 해서 가장 0에 가까운 값을 만드는 두 요소를 출력하는데, 이 때 값을 오름차순으로 출력해야 한다.
코드 :
import sys
N = int(sys.stdin.readline())
lst = list(map(int, sys.stdin.readline().split()))
# 절댓값을 기준으로 정렬하기 위함
lst.sort(key= lambda x: abs(x))
min_ = float('INF') # min값을 계산하기 위해 큰 값으로 초기값 설정
minA, minB = 0, 0 # 두 용액 값을 저장할 변수
for i in range(len(lst)-1):
if min_ > abs(lst[i] + lst[i+1]):
min_ = abs(lst[i] + lst[i+1])
minA, minB = lst[i], lst[i+1]
# 오름차순 출력을 위한 간단한 조건문
if minA < minB: print(minA, minB)
else: print(minB, minA)
초반에 접근을 잘해서 쉽게 풀었던 문제!
뿌듯하다 ദ്ദി*ˊᗜˋ*)
'Programming > Algorithm' 카테고리의 다른 글
[백준1303] / 전쟁 - 전투 - DFS (0) | 2024.09.11 |
---|---|
[백준13549] / 숨바꼭질3 - BFS (2) | 2024.09.06 |
[백준1806] / 부분합 - 투포인터 (!엉성함주의!) (1) | 2024.09.04 |
[백준17478] / 재귀함수가 뭔가요? - 재귀 (3) | 2024.09.03 |
[백준20291] / 파일 정리 - 정렬, 파싱 (0) | 2024.08.19 |