파이썬_실전 프로젝트

프로젝트 오일러 1번문제 - 배수의 합(루프문사용법)

1000 미만의 3과 5의 배수의 합을 모두 구하는 문제입니다.

 

Multiples of 3 and 5

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

 

 

1. 루프문을 돌면서,

2. 루프마다 3과 5로 나누어 떨어지는지 확인후에, 합계에 누적을 해주면 됩니다.

 

문제를 풀고나면, 해당 문제의 포럼을 들어갈수 있는데,

여러나라 사람들이 여러가지 프로그래밍 언어로 작성한 코드들을 볼수 있습니다.

자신의 결과와 비교해볼수도 있고, 다른사람코드를 보면서 공부도 할수 있습니다.

 

루프문 사용법
while문
#1부터 100까지 합

i = 1
total = 0
while i <= 100:
    total = total + i
    i = i + 1
print(total)

 while 문은 for 문과는 달리, 변수 i 를 while문 전에 초기화를 해주고, 루프중에 i값을 i=i+1 과 같이 값을 직접 증가시켜 줘야 합니다. i=i+1 대신에, i +=1 , i +=2 , i -= 1 처럼 줄여서 쓸수 있습니다.

 

whlie문 - 무한루프
#1부터 100까지 합 -while문(무한루프)

i = 1
total = 0
while True:
    total = total + i
    i += 1
    if i > 100: 
        break
print(total)

루프의 정확한 크기를 모를때는 일단 무한루프를 만들고, 조건문을 나중에 줘서 break를 할수도 있습니다.

 

for문
#1부터 100까지 합

total = 0
for i in range(1,101):
    total += i
print(total)

for문에는 range()함수가 같이 사용되는데, range명령은 초기값, 종료(직전)값, 증감값 을 주게 되어 있어서, while문보다 좀더 간단하게 사용할수 있습니다. 주의할부분은 range(1,100) 이렇게 주게되면, 100은 범위에 포함되지 않고, 1부터 99까지만 생성되니, "미만"인지, "이하"인지 항상 종료값부분에 주의를 해야 합니다. range(100) 처럼 종료값만 주게 되면, 자동으로 0~99 까지의 정수값이 생성됩니다.

 

for문 축약형
#1부터 100까지 합

total = sum([x for x in range(1,101)])
print(total)

간단한 for 문 같은 경우 파이썬에서는 위처럼 줄여서 쓸수 있습니다. 정확하게는 1부터 100까지 list 타입의 데이터가 생성이 되고 이를 합산하라는 명령입니다. 대괄호[]  표시는 파이썬에서 List 타입의 데이터형이라는 의미입니다.

#1부터 100까지 합(짝수만)
total = sum([x for x in range(1,101) if x%2==0])
print(total)

만약에 축약형에 조건문을 주고 싶으면, if문을 위처럼 주면 됩니다. and/or 논리연산자를 써서 여러가지 조건을  동시에 줄수도 있습니다.

 

3과 5의 배수는 위의 루프문들에 조건문만 추가하면 간단히 구할수 있습니다.

 

댓글

댓글 본문