목록문제/백준_파이썬 (155)
sm 기술 블로그
import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [[0]*(N+1)] + [[0]+list(map(int,input().split())) for _ in range(N)] result = "" for i in range(1, N+1): for j in range(1, N+1): arr[i][j] = arr[i][j] + arr[i-1][j] + arr[i][j-1] - arr[i-1][j-1] for _ in range(M): x1,y1,x2,y2 = map(int, input().split()) tmp = 0 tmp = arr[x2][y2] - arr[x2][y1-1] - arr[x1-1][y2] + arr[x1-..
import sys input = sys.stdin.readline N,M= map(int, input().split()) num = list(map(int, input().split())) sum = 0 numRemainder = [0] * M for i in range(N): sum += num[i] numRemainder[sum % M] += 1 result = numRemainder[0] for i in numRemainder: result += i*(i-1)//2 print(result) 문제요약 다양한 구간의 합에서 M으로 나누어 떨어지는 곳을 구하라. 설명 우선 문제에서 출력이 어떻게 나오는지 알아보자. 먼저 백준의 입력 예시로 알아보면, 이 입력으로 각 인덱스별 시작 구간 합을 아래와 같다..
import sys input = sys.stdin.readline S = list(input().strip()) q = int(input()) result = "" alpSum = [] alphabet = [0]*26 for val in S: alphabet[ord(val) - 97] += 1 # 카운팅 정렬 소스 alpSum.append(alphabet[:]) for _ in range(q): a,l,r = input().split() l = int(l) r = int(r) tmp = 0 tmp = alpSum[r][ord(a) - 97] if l != 0: tmp -= alpSum[l-1][ord(a) - 97] # 누적합이기 때문에 -1 result += str(tmp) + "\n" print(r..
import sys input = sys.stdin.readline N,K = map(int,input().split()) num = list(map(int,input().split())) sum = 0 numSum = [0] numArr = [] for val in num: sum += val numSum.append(sum) for i in range(K, N+1): numArr.append(numSum[i] - numSum[i-K]) print(max(numArr)) 문제요약 측정한 온도 전체 날짜는 N이다. K는 합을 구하기 위한 연속적 날짜 수이다. 날짜 N 의 연속적인 날짜 K의 합은 얼마인가? 설명 누적합을 쓰면 매우 빠르게 문제를 풀 수 있다. 맨위는 입력받은 값이고 그 입력받은 값을 기준..