Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스프링 트랜잭션 관리
- JSON 분리
- 읽기 작업과 쓰기 작업 분리
- 스프링배치 csv
- 트랜잭션 분리
- 스프링배치 엑셀
- JSON 분할
- stepexecutionlistener
- step 값 공유
- 아이템 리더 커스텀
- api 아이템 리더
- 스프링배치 메타테이블
- step 여러개
- job parameter
- Spring Batch
- 아이템 리더 페이징 처리
- step 사이 변수 공유
- 마이바티스 트랜잭션
- JSONArray 분할
- flatfileitemwriter
- 스프링 배치 5
- aop proxy
- executioncontext 변수 공유
- JSONObject 분할
- abstractpagingitemreader
- mybatis
- executioncontext
- spring batch 5
- 선언적 트랜잭션 관리
- spring batch 변수 공유
Archives
- Today
- Total
ebson
boj.kr/2470 두 용액 (gold5) 파이썬 풀이 본문
1. p1, p2에 각각 0과 정수 배열의 길이-1을 저장한다.
2. ans 변수에 정수배열에서 p1, p2 인덱스의 두 값을 저장한다.
3. 정수배열의 p1, p2 인덱스의 두 값을 더한 값을 tot 변수에 저장한다.
4. tot의 절댓값을 min_tot에 저장한다.
5. p1 이 p2보다 작으면 아래 6-10을 반복한다.
6. 정수배열의 p1, p2 인덱스의 두 값을 더한 값의 절댓값이 min_tot보다 작으면 ans의 0, 1번 인덱스의 값을 정수배열의 p1, p2인덱스의 값으로 갱신한다.
7. min_tot 값을 저장한다.
8. tot 값을 저장한다.
9. tot 값이 음수이면 p1을 1 증감하고 tot 값이 양수이면 p2값을 1 감소한다.
10. tot 값이 0이면 반복문을 빠져나온다.
11. ans 배열을 정렬하고 순서대로 출력한다.
N = int(input())
nums = list(map(int, input().split()))
nums.sort()
p1 = 0
p2 = len(nums)-1
ans = [nums[p1], nums[p2]]
tot = nums[p1] + nums[p2]
min_tot = abs(tot)
while p1 < p2:
tot_abs = abs(nums[p1] + nums[p2])
if min_tot > tot_abs:
ans[0] = nums[p1]
ans[1] = nums[p2]
min_tot = min(min_tot, tot_abs)
tot = nums[p1] + nums[p2]
if tot < 0:
p1 += 1
elif tot > 0:
p2 -= 1
else:
break
ans.sort()
print(*ans)
정렬, 투포인터, 이분탐색으로 분류되는 문제이다. 정렬한 후에 투포인터를 정수배열의 왼쪽 시작인덱스와 오른쪽 끝인덱스로 주어야 한다. 왜냐하면 그렇게 해야 음수인 경우에는 왼쪽의 포인터를 1 증감하고 양수인 경우에는 오른쪽의 포인터를 1 감소함으로서 각 포인터에 해당하는 정수배열의 두 요소의 값의 합을 0에 가깝도록 순차적으로 탐색할 수 있기 때문이다.
'ALGORITHM STUDY WITH PYTHON > Binary Search' 카테고리의 다른 글
boj.kr/1939 중량제한 (gold3) 파이썬 풀이 (0) | 2023.05.29 |
---|---|
boj.kr/2343 기타 레슨 (silver1) 파이썬 풀이 (0) | 2023.05.28 |
boj.kr/1300 K번째 수 (gold2) 파이썬 풀이 (1) | 2023.05.28 |
boj.kr/12015 가장 긴 증가하는 부분 수열 2 (gold2) 파이썬 풀이 (0) | 2023.05.27 |
boj.kr/2110 공유기 설치 (gold4) 파이썬 풀이 (0) | 2023.05.23 |
Comments