[백준 / 투 포인터] 2003 : 수들의 합 2 (python)
풀이 import sys input = sys.stdin.readline N, M = map(int, input().split()) A = list(map(int, input().split())) i,j,cnt,sum = 0,0,0,A[0] while j != N: try: if sum M: sum-=A[i] i+=1 else: cnt+=1 sum-=A[i] i+=1 j+=1 sum+=A[j] except IndexError: break print(cnt) 투 포인터는 2개의 포인터로 알고리즘의 시간 복잡도를 최적화한다. 위 문제의 시간제한은 0.5초인데, N, M의 범위 값이 각각 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,00..
[백준 / DP] 1253 : 좋다 (python)
문제 설명 문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 예제 입력 1 10 1 2 3 4 5 6 7 8 9 10 예제 출력 1 8 힌트 3,4,5,6,7,8,9,10은 좋다. 풀이 import sys input = sys.stdin.readline N = int(input()) A = sorted(..
[백준 / 구간 합 구하기] 11660 : 구간 합 구하기 5 (python)
문제 설명 문제 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다. 표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 입력 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채..