목록코딩 테스트/백준 문제 풀이 (107)
공부 기록장
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. 투포인터로 풀어야 한다..
https://www.acmicpc.net/problem/11728 코드첫 번째 풀이 : 유형을 생각하지 않은, 처음 떠올린 풀이import heapqfrom collections import dequen, m = map(int, input().split())a = deque(list(map(int, input().split())))b = deque(list(map(int, input().split())))answer = []while a: heapq.heappush(answer, a.popleft())while b: heapq.heappush(answer, b.popleft())for _ in range(len(answer)): print(heapq.heappop(answer), en..
https://www.acmicpc.net/problem/2565 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 www.acmicpc.net 코드 N = int(input()) dp = [1] * N lines = sorted([list(map(int, input().split())) for _ in range(N)], key = lambda x : x[0]) for i in range(N): for j in range(i): if lines[i][1] > lines[j][1]: dp[i] = max(dp[i], dp[j] + 1) print..