Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 머신러닝
- ssh #우분투 ssh #우분터 서버 #도커 #우분투 도커 #docker #cuda #우분투 개발환경 #딥러닝 #ubuntu docker #ubuntu cuda
- GPU #jtorch GPU #파이토치 병렬 #파이토치 GPU #pytorch gpu #multi process torch #horovod
- docker #cuda #docker container #도커 #도커 컨테이너 #쿠다 #cuda 11.3
- 파이썬 #Python
- 깃허브 #우분투 #ubuntu #Github #깃허브 우분투 #깃헙 우분투 #깃헙
- 트랜스포머 #자연어처리 #딥러닝 #구글 #attention #self-attention #BERT #transformer #deeplearing
- 알고리즘 #levenshtein distance #편집거리 #edit distance
- docker #우분투 #ubuntu #도커 설치 #docker 설치 #docker installation #우분투 도커
- 구름
- cuda #centos #cuda삭제 #리눅스 #cenos cuda삭제
- docker #아나콘다 #anaconda #ubuntu anaconda #docker anaconda
- 트랜스포머 #transformer #attention #self-attention #어텐션 #인공지능 #AI #딥러닝 #NLP #자연어처리
- GPU #cuda out of memory #gpu 메모리 #pytorch
- 백준 #알고리즘 #골드
- docker #도커 #도커 컨테이너 #docker container #도커 우분투
- logistic regression
- jupyter notebook #anaconda #vscode #pytorch #딥러닝 #deep learning #vscode server #서버 vscode #ssh vscode #vscode cuda
- pandas #folium #groupby #네이버부스트코스 #코칭스터디
- BERT #구글BERT #BERT의정석
- pytorch #cuda #우분투 torch #ubuntu pytorch #cuda torch #cuda pytorch
- 백준
- 구름자연어처리과정
- Machine Learning
Archives
- Today
- Total
바닥부터 시작하는 개발 공부
[알고리즘]백준 11659번: 구간 합 구하기4 본문
728x90
알고리즘 유형: 누적 합
문제
수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.
출력
총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.
풀이
일정한 숫자의 배열이 주어지고 이에 대해서 특정 구간 i, j 사이에서 합을 구하는 문제였습니다.
sum 함수를 활용하여 계산을 진행하면, 반복 수(M)이 큰 경우 시간 복잡도 O(N) 인 sum 함수를 계속 반복하므로
비효율적이며, 시간 초과가 발생하게 됩니다.
이를 방지하기 위해서 배열이 주어졌을 때 구간합을 미리 계산해둡니다.
아래에서 get_sum 함수를 통해 구간합의 정보를 바로 얻을 수 있는 배열을 만들었습니다
import sys
N, M =map(int, sys.stdin.readline().strip().split(" "))
nums = list(map(int,sys.stdin.readline().strip().split(" ")))
def get_sum(nums):
sum_nums =[]
num = 0
sum_nums.append(num)
for i in nums:
num+=i
sum_nums.append(num)
return sum_nums
nums = get_sum(nums)
for _ in range(M):
i, j = map(int,sys.stdin.readline().strip().split(" "))
print(nums[j]-nums[i-1])
728x90
'Algorithm > 백준' 카테고리의 다른 글
[알고리즘]백준 9461번: 파도반 수열 (0) | 2023.02.16 |
---|---|
[알고리즘]백준 1463번: 1로 만들기 (0) | 2023.02.16 |
[알고리즘]백준 1620: 나는야 포켓몬 마스터 이다솜 (0) | 2023.02.15 |
[알고리즘]백준 15829번: Hashing (0) | 2023.02.09 |
[알고리즘]백준 11286번: 절대값 힙 (0) | 2023.02.09 |