본문 바로가기
이론/Python

mail_programming - 1주차 : 연속되는 가장 큰 정수

by 유세지 2018. 4. 8.

매주 하나씩 프로그래밍 문제를 메일로 보내준다는 매일 프로그래밍... 동아리 사람들끼리 모여서 진행중이었는데 난 휴학생이라 이제서야 알게됨..ㅠㅠ 인생은 짧으니 파이썬도 익숙해질겸 하나씩 해보기로 했다!




연속된 정수들의 가장 큰 합을 출력하라는 것이 문제인데, 시간 복잡도 따위는 고려하지 않는 코딩으로 어찌어찌 했다.

중학교 수학 시간에 배웠던 부분 집합을 만드는 방법에서 착안하여


요소가 하나인 부분 집합

요소가 둘인 부분 집합

요소가 셋인 부분 집합

...


들을 만들어 그들의 합을 구하는 방식이다.


변수 parameter은 요소의 개수를 의미하고, idx는 인덱스, k는 연속되는 정수들을 세는 역할을 한다.


입력받은 sett 배열의 인덱스에 도착해 그 값을 sum 에 더하고, parameter의 개수만큼 연속하는 정수들을 더해준다.


모든 값을 더했다면, 그 값을 lastsett 배열에 집어넣고 인덱스를 올려 위 과정을 반복하는 식.




아래는 코드 전문이다.



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
31
32
33
34
35
36
37
38
39
40
41
42
43
sett = []
lastsett = []
 
many = int(input("집합에 몇 개 들어가나요: "))
 
for i in range(0,many):
    a = int(input("집합에 넣을 요소 입력: "))
    sett.append(a)
 
parameter = 1
size = len(sett)
 
while(parameter != size):
    sum = 0
    k = 0
    idx = 0
 
    while(idx+parameter<=size):
        while(k != parameter):
            if(idx+== size): break
            #print(" - 이곳의 인덱스는 %d 이고" % (idx+k))
            #print(" - %d 를 더해줬어요" % sett[idx+k])
            sum = sum + sett[idx+k]
            k += 1
        lastsett.append(sum)
        #print(" - 결국엔 %d가 들어갑니다" % sum)
        idx += 1
        k = 0
        sum = 0
    parameter += 1
    #print("현재 파라미터 값: %d" % parameter)
 
sum = 0
for b in range(0, size):
    sum += sett[b]
#print("%d이 마지막으로 들어갑니다" % sum)
lastsett.append(sum)
 
#for c in lastsett:
#    print(c)
 
#print("결과는")
print(max(lastsett))
cs




아래는 결과 화면





파이썬 진짜 쉽고 재밌다...

반응형

댓글