일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 칭기스칸 동상
- 초원
- algorithm
- 몽골요리
- 아부다비
- 여행
- 코로나
- Python
- LG글로벌챌린저
- 헬스
- 울란바토르
- 게르
- 독일
- 한 줄로 서기
- 테를지국립공원
- 몽골
- 칭기즈칸
- 테를지
- SWEA
- 몽골 고기
- 몽골 헬스장
- 소프트웨어 아카데미
- 교환학생
- 백준
- 월드프렌즈
- 파이썬
- 알고리즘
- 월드프렌즈 ICT 봉사단
- ICT봉사단
- 담슈타트
Archives
- Today
- Total
맛있는물회
[맛있는물회] <SWEA 알고리즘> 4835번 "구간합 구하기" 본문
파이썬으로 알고리즘 공부를 시작했다.
아직 문법이 익숙지 않은 것도 있고 알고리즘 손 놓은지 약 4개월이 다 되어간다. 취업을 위해서라도 오늘부터 꾸준히 쉬운문제부터 열심히 해야겠다!! ㅎㅎ
문제 조건
Input
첫 줄에 테스트 케이스 개수 T가 주어진다. ( 1 ≤ T ≤ 50 )
다음 줄부터 테스트케이스의 첫 줄에 정수의 개수 N과 구간의 개수 M 주어진다. ( 10 ≤ N ≤ 100, 2 ≤ M < N )
다음 줄에 N개의 정수 ai가 주어진다. ( 1 ≤ a ≤ 10000 )
Output
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
생각한 아이디어
아주 기초적인 문제라서 블로그를 찾아올 사람이 있을지는 모르겠지만 적어본다. 정말 간단한 그리디 문제이다.
테스트 케이스의 개수에 맟는 최대 최소의 범위를 잡아두고 List의 첫번째부터 Sequential하게 나아가면서 끝에 도달하면 계산 후 출력하는 형식이다.
아래의 코드를 보면 아주 쉽게 이해가 갈 듯하다.
소스코드
T = int(input())
for TC in range(1, T+1):
N,M = map(int,input().split())
arr = list(map(int,input().split()))
i = 0
min = 9999999
max = -9999999
while 1:
sum = 0
if i+M > N:
break
for j in range(i,i+M):
sum += arr[j]
if sum>max:
max = sum
if sum < min:
min = sum
i += 1
print('#%d %d' %(TC, max-min))
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <SWEA알고리즘> 4831번 "전기 버스 " (0) | 2020.03.31 |
---|---|
[맛있는물회] <SWEA알고리즘> 4834번 "숫자 카드" (0) | 2020.03.31 |
[맛있는물회] <알고리즘> 2200번 "계산기 " (0) | 2020.03.28 |
[맛있는물회] <알고리즘> 1138번 "한 줄로 서기" (0) | 2020.03.19 |
[맛있는물회] <알고리즘> 2875번 "대회 or 인턴" (0) | 2019.06.28 |
Comments