목록2024/08/08 (2)
공부 기록장
https://www.acmicpc.net/problem/2230 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())arr = [int(input()) for _ in range(n)]arr.sort()end = 1ans = int(2e9)for i in range(n): while arr[end] - arr[i] = m: ans = min(ans, arr[end] - arr[i])print(ans)'''n개의 정수 수열두 수를 골랐을 때(같은 수 가능), 그 차이가 M 이상이면서 제일 작은 경우?''' 접근 방식1. 투포인터 사용하기 위해 수열 정렬2. 시작점은 0, 끝점은 1에서 시작 (같은 수 불가능)3. ..
https://www.acmicpc.net/problem/1806 코드n, s = map(int, input().split())arr = list(map(int, input().split()))start, end = 0, 0sum_ = arr[0]# 수 범위 보고 적절한 최댓값으로 설정하기ans = 100001while True: if sum_ 접근 방식1. 투포인터를 사용하기 위해서는 수열을 정렬해야겠다고 생각 2. 포인터를 각각 0으로 초기화3. 합이 s보다 작은 경우, 끝 포인터를 이동 및 부분합에 더하기3. 합이 s 이상인 경우, 최솟값 갱신해주고 시작 포인터 이동 및 부분합에서 빼기4. end == n일 때 반복문 탈출 (즉, 모든 경우 확인 후 종료) 배운 점1. 투포인터로 풀어야 한다..