728x90
난이도 : 골드5
풀이일 : 2401254
https://www.acmicpc.net/problem/2467
링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐
풀이 코드
import sys
N = int(sys.stdin.readline())
liquid = list(map(int, sys.stdin.readline().split()))
front = 0
rear = N - 1
numL = liquid[front]
numR = liquid[rear]
mini = abs(numL + numR)
while front < rear:
temp = liquid[front] + liquid[rear]
if abs(temp) < mini:
numL = liquid[front]
numR = liquid[rear]
mini = abs(temp)
if temp == 0:
break
if temp < 0:
front += 1
else:
rear -= 1
print(numL, numR)
- liquid : 주어지는 용액 정보 저장
- front : 왼쪽 인덱스
- rear : 오른쪽 인덱스
- numL : 특성 값이 0에 가까워지는 조합의 왼쪽 수
- numR: 특성 값이 0에 가까워지는 조합의 오른쪽 수
- front가 rear 보다 작은 동안 반복하며 두 인덱스 수를 더해 그 절대값 탐색
- 절댓값이 현재 최소치보다 작다면, numL, numR, mini를 갱신
- 절댓값이 음수라면 front += 1
- 절댓값이 양수라면 rear -= 1
느낀점
- 간단한 문젠데 날림으로 풀어서 다섯 번이나 틀리고 풀었다. 눈을 제대로 뜨고 내 코드 한 줄 한줄의 의미를 생각하면서 알고리즘을 풀도록 하자
- 여행중에 한국 시간 맞춰 문제 풀고 커밋하기 너무 신경쓰인다.
'알고리즘 > 🥇 골드' 카테고리의 다른 글
백준 11404 플로이드 파이썬 풀이 (0) | 2024.02.09 |
---|---|
백준 12865 평범한 배낭 파이썬 풀이 (1) | 2024.02.07 |
백준 1647 도시 분할 계획 파이썬 풀이 (0) | 2024.01.24 |
백준 2623 음악프로그램 파이썬 풀이 (1) | 2024.01.22 |
백준 1766 문제집 파이썬 풀이 (1) | 2024.01.21 |