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 | 31 |
Tags
- JSON 분해
- JSONObject 분할
- 날짜형을 문자형으로
- 무시하기
- JSON 분리
- 스프링 배치 공식문서
- 스프링 웹플럭스
- 스프링 배치 메타 테이블
- JSONArray 분할
- JobExecutionAlreadyRunningException
- 마이바티스 트랜잭션
- Meta Table
- jar 소스보기
- 스테이지에 올리기
- 성능개선
- spring webflux
- 마리아디비
- JSON 분할
- 폐기하기
- 문자형을 날짜형으로
- multi update
- nonblocking
- str_to_date
- 스프링 리액티브 프로그래밍
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- batchInsert
- git stage
- spring reactive programming
- org.json
- date_format
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