본문 바로가기
Program/Python(Project Euler)

Python :: Project Euler 5 문제 풀이

by 시레엔 2018. 5. 9.
반응형

안녕하세요.

오늘은 Project Euler 5번째 문제 풀이에 대한 포스팅을 진행하려고 합니다.


5번 문제는 아래와 같으며, 사실상 수학적으로 난이도가 있는 것과 같은 문제처럼 느껴집니다.

하지만, 따지고 보면 최소공배수를 구하는 문제 중에 하나라고 생각하시면 될 것 같습니다.



일단 예제로는 1~10까지의 어떤 수로도 나누어 떨어지는 가장 작은 수가 2520이라고 했는데, 당연히 1~20사이에서는 더 큰수로 나올 것 같네요. 아무튼 그래서 n이라는 숫자를 1부터 시작해서 하나씩 증가시키면서 1~20사이의 수를 나눠서 0을 만족하는 수를 나오게 하는 알고리즘을 가지고 아래와 같은 코딩을 시작했습니다.


초기에 들어가야할 조건은 a와 b라는 리스트 함수와 n이라는 변수를 넣어서 시작했습니다.

사실 여기서 b라는 리스트함수는 생략하셔도 상관 없을 것 같습니다만, 그래도 그냥 편한대로 수치해석을 수행하는게 가장 좋다고 생각하기에, 넣어서 알고리즘을 구성하였습니다.


n=1

a=list()

b=list()

while True :

print(n)

for i in range (1,21) :

c=n%i

zero=0

a.append(c)

b.append(zero)

if (a==b)==True :

print("answer=",n)

break

a.clear()

b.clear()

n=n+1


전체적인 코딩을 수행하는 과정은 이렇습니다.

먼저 n이라는 숫자가 하나씩 증가되면서 1~20까지의 수로 나뉘는지 확인을 합니다. 만약에 이 모든 것들의 나머지가 0이 된다는게 검증이 된다면, Print로 답변을 내놓고, 전체적인 알고리즘은 멈추는 그런 과정들이 포함되어 있습니다.


조금 더 단순하게 구성을 해야하는데, 확실히 파이썬에 미숙함이 점점 보이게 되는 것 같습니다.

위의 코드를 좀 더 단순하게 해서 Project Euler 전반적인 코딩이 끝나면 재 도전해볼 수 있는 기회를 가져야겠습니다.

반응형

댓글