Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 문자형 배열
- l-value참조자
- 회전 및 자리 이동 연산
- LAN의 분류
- 백준 파이썬
- r-value참조자
- 원형 연결 구조 연결된 큐
- 프로그래머스 푸드 파이트 대회
- 주기억장치
- c언어 괄호검사
- 운영체제 기능
- getline()함수
- 문제해결 단계
- C언어 계산기 프로그램
- const화
- 범위 기반 for문
- IPv4 주소체계
- 네트워크 결합
- 논리 연산
- 프로그래머스 배열만들기4
- const l-value참조자
- C언어 스택 연산
- 괄호 검사 프로그램
- 값/참조/주소에 의한 전달
- auto 키워드
- 알고리즘 조건
- C언어 덱
- 유형 변환
- string유형
- 입출력 관리자
Archives
- Today
- Total
chyam
[프로그래머스 Lv2,python] - 연속된 부분 수열의 합 본문

https://school.programmers.co.kr/learn/courses/30/lessons/178870?language=python3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(sequence, k):
li=[] # 값 저장
start,end=0,0
mi= float('inf') # 최대의 값으로 초기화
su=sequence[0] # 처음 값을 저장해둠
while(start<len(sequence) and end<len(sequence)):
if su==k: # 같을때 인덱스 저장
if mi>end-start: # 최소값보다 작으면 새로 저장
mi=end-start
li=[start,end] # 그 값을 인덱스에 저장
su-=sequence[start] # start위치를 옮기기전에 빼주기
start+=1
elif su<k: # 적을때 end 뒤로 옮김
end+=1
if end<len(sequence): # end가 최대가 아니면 더해주기
su+=sequence[end]
else: # 클때는 start를 뒤로 옮김
su-=sequence[start] # 값을 빼주고 뒤로 옮기기
start+=1
return li
아래의 코드는 for문을 중첩하여 접근하여 시간초과가 떴던 코드이다.
def solution(sequence, k):
li=[]
an=[]
mi=100000
for i in range(len(sequence)):
for j in range(i+1,len(sequence)+1):
su=sum(sequence[i:j]) # i번쨰부터 j번째 인덱스까지의 값을 더한값이
if su==k: # k와 같으면 그 인덱스들 추가
li.append([i,j-1])
elif su>k: # k보다크면 멈추기
break
for i in li:
dif=i[1]-i[0] # 인덱스 차이
if dif<mi: # 최소보다 작으면 저장
an=i
mi=dif
return an
'프로그래머스 > LV2' 카테고리의 다른 글
[프로그래머스 Lv2,python] - 전력망을 둘로 나누기 (0) | 2025.02.24 |
---|---|
[프로그래머스 Lv2,python] - 시소 짝꿍 (0) | 2025.02.23 |
[프로그래머스 Lv2,python]- 큰 수 만들기 (0) | 2025.02.21 |
[프로그래머스 Lv2,python]- 숫자 변환하기 (1) | 2025.02.16 |
[프로그래머스 Lv2,python]- 다리를 지나는 트럭 (0) | 2025.02.15 |