-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
해결됨
k번째 큰 수에서 반복문 관련 질문
20.08.18 23:13 작성 조회수 109
0
안녕하세요 얼마 전부터 강의를 듣기 시작했는데 모르는 것이 너무 많아 매일이 좌절의 연속입니다ㅠ
k번째 큰 수에서 코드가 선생님의 정답 코드와 다른 부분이 있는데 둘 다 맞는것인지 궁금해서 질문드립니다.
import sys
#sys.stdin=open("in1.txt", "rt")
N,K = map(int, input().split())
lst=list(map(int, input().split()))
sum_lst=set()
for i in range(N-2):
for j in range(i+1, N-1):
for k in range(j+1, N):
sum_lst.add(lst[i]+lst[j]+lst[k])
sum_lst=list(sum_lst)
sum_lst.sort(reverse=True)
print(sum_lst[K-1])
위 코드 속 반복문에서 반복문의 범위를 저는 각각 N-2, N-1, N까지 반복하도록 했습니다.
반면 선생님의 코드에서는 모두 범위를 N까지 주셨는데 이렇게 놓으면 최종 루프에서는 N번째 값을 3번 더하게 되는것 아닌가요?
제가 맞게 이해했는지 알려주시면 감사하겠습니다.
답변을 작성해보세요.
0
0
김태원
지식공유자2020.08.19
range(start, stop, step) 3개의 인자로 구성되며 step값만큼 증가감을 해 start에서 시작해 stop값 전까지 range객체를 미리 만들어 놓고 for 문에 대응되는 것입니다. 즉 start에서 stop로 step값만큼 증가감을 할 수 없으면 그냥 빈 객체가 생성되고 for문은 반복하지 않습니다. range(10, 9) 와 같이 하면 빈객체가 생성됩니다. step값이 생략되면 기본값으로 1입니다.
print(list(range(10, 9))) 를 출력하면 빈리스트가 출력됩니다.
0
덜더장이
질문자2020.08.19
답변 감사합니다! 추가 질문인데 i값이 n번째를 가리키면 j는 n+1을 가리켜야 해서 인덱싱 에러? 가 일어나야 되는거 아닌가 생각했는데 그게 아닌가보네요.. 제가 반복문을 제대로 이해하지 못하고 있는걸까요?
0
김태원
지식공유자2020.08.19
안녕하세요^^
i값이 마지막 n번째를 가르킨다면 그 안쪽 for문인 j가 n번째를 가르킬 수 있을 까요?
위에 님코드 처럼 하는게 제일 좋습니다. 하지만 영상처럼 한다고 해서 i, j, k가 모두 n번째를 인덱싱하는 일은 없습니다.
답변 4