투 포인터
-
[백준 1644번] 소수의 연속합Coding Test/백준 2021. 3. 22. 06:08
# 문제 내 풀이 # 2부터 4000000까지의 모든 수에 대하여 소수 판별 (n의 최대 입력) limit_num = 4000000 # 처음엔 모든 수를 소수(True)인 것으로 초기화(0, 1은 제외) array = [True for _ in range(limit_num + 1)] # 에라토스테네스의 체 알고리즘 수행 # 2부터 limit_num의 제곱근까지의 모든 수를 확인하며 for i in range(2, int(limit_num ** 0.5) + 1): if array[i] == True: # i를 제외한 i의 모든 배수를 지우기 j = 2 while i * j
-
[백준 2470번] 두 용액Coding Test/백준 2021. 3. 13. 01:49
# 문제 내 풀이 n = int(input()) data = list(map(int, input().split())) min_val = 2 * int(10e9) # 혼합 용액의 최소 특성값 left = 0 right = n - 1 data.sort() # 오름차순 정렬 # 양 끝의 포인터가 엇갈리기 전까지 while left < right: # 현재 가리키는 두 용액의 특성값 합이 최소 특성값이라면 최솟값 갱신 if abs(data[left] + data[right]) < min_val: min_val = abs(data[left] + data[right]) min_pair = (data[left], data[right]) # right가 가리키는 특성값의 절대값이 더 크다면 right를 1 감소시킴 i..
-
[백준 3273] 두 수의 합Coding Test/백준 2021. 3. 10. 20:53
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 n = int(input()) nums = list(map(int, input().split())) x = int(input()) cnt = 0 # (ai, aj) 쌍의 갯수 left = 0 # 왼쪽 인덱스 right = n - 1 # 오른쪽 인덱스 nums.sort() # 오름차순으로 정렬 수행 # 두 포인터가 교차할 때까지 while left x: right -= 1 continue l..