본문 바로가기
반응형

Programming/Project Euler112

#76 합의 경우의 수(Dynamic Programming) 이번 문제는 경우의 수를 계산하는 것입니다. 보통 분할(partition) 문제는 중복조합, 조합, 순열 등의 기법이 사용될 수 있지만, 이 문제와 같은 경우에는 분할이 쉽지 않습니다. 문제는 짧은 편입니다. N이란 숫자가 주어지면, 1부터 N-1 까지의 숫자중 2개 이상을 선택해서 그 합이 N이 되도록 하는 경우의 수를 찾는 것입니다. 예를 들어서 N=5라고 한다면, \( 5 = 1 + 1 + 1 + 1 + 1 \) \( 5 = 1 + 1 + 1 + 2 \) \( 5 = 1 + 1 + 3 \) \( 5 = 1 + 4 \) \( 5 = 1 + 2 +2 \) \( 5 = 2+ 3 \) 위와 같이 총 6가지가 나옵니다. 이 문제에서는 N=100일 때의 경우의 수가 얼마인지 계산하라는 문제입니다. 문제의 원본.. 2020. 1. 15.
#75 단일길이 정수 직각 삼각형 이번 문제는 피타고라스 삼각형을 만들고, 그것을 에라스토테네스의 체처럼 사용하는 문제입니다. 난이도 25% 문제입니다. 하지만, 피타고라스 삼각형을 만드는 공식만 알면 크게 어려움 없이 풀 수 있는 문제입니다. 이 프로그램을 작성할 때만 해도 STL을 거의 사용하지 않았을 때인지라 무식하게 배열을 사용했지만, STL의 map 자료형을 사용하면 더 쉽게 풀 수 있을거라고 보입니다. 문제를 간단하게 요약하자면 다음과 같습니다. 변의 길이가 정수인 직각삼각형이 있습니다. 둘레 길이가 주어졌을 때, 어떤 정수 직각 삼각형은 여러개가 나올 수 있습니다. L < 1,500,000 인 둘레길이를 가지면서, 해당 둘레에서 그러한 정수 직각삼각형이 오직 한개인 개수를 구하세요. 문제의 원본은 다음과 같습니다. https.. 2020. 1. 14.
#74 자릿수 팩토리얼 연결 고리 10진수의 수를 각각의 자릿수를 분해해서 재조합하다보면 재미있는 수를 얻을 수 있습니다. 예를 들어서 145라는 수를 분해해서 팩토리얼을 취한후 합해보면, \(145 \to 1! + 4! + 5! = 1+24+120=145\)라는 결과를 얻게 됩니다. 이와 같이 같은 수가 나올 수 있지만, 어떤 수는 위의 작업을 반복하다보면, 자신의 수가 되기도 하고 중간에 나왔던 수가 되어 싸이클을 반복할 수도 있습니다. 이 문제는 이러한 수들의 연결고리가 반복되기 전까지 얼마나 오래 가는가에 대한 문제입니다. 난이도 15% 정도로 구현에 어려움이 없는 문제입니다. 문제의 링크입니다. https://projecteuler.net/problem=74 Problem 74 - Project Euler The number 1.. 2019. 12. 27.
#73 범위안의 분수 세기 이 문제는 난이도 15% 정도의 문제입니다. 범위안의 분수를 세는 문제인데요. 프로젝트 오일러 #72 문제와 마찬가지로 분모의 범위가 주어지고, 그 안에서 1/3 와 1/2 사이의 분수의 갯수를 구하는 것입니다. 기약분수라는 조건이 달려있습니다. 즉, 1/3 와 1/2 사이에 2/5, 4/10, 6/15, .. 분수들이 있는데, 4/10, 6/15는 모두 2/5와 같은 분수이기 때문에 카운팅을 하면 안 됩니다. 프로젝트 오일러 #73 문제는 아래의 링크를 참조하세요. https://projecteuler.net/problem=73 Problem 73 - Project Euler Consider the fraction, n/d, where n and d are positive integers. If n p.. 2019. 12. 21.
[C/C++] 프로젝트 오일러 #72 분수 세기(수학) 이번 문제는 분수를 세는 문제입니다. 해당 문제는 아래 링크입니다. https://projecteuler.net/problem=72 Problem 72 - Project Euler Consider the fraction, n/d, where n and d are positive integers. If n projecteuler.net 이 문제는 분모의 범위가 정해졌을 때, 기약분수로 표현할 수 있는 분수는 총 몇개인가에 대한 문제입니다. 모든 경우를 다 따져서 기약분수로 만들어서 겹치는 것 제외하면 되겠다고 생각할 수 있지만, 이것이 생각처럼 쉽지 않습니다. \(d \leq 8\)인 분모 d를 갖는 기약분수는 다음과 같습니다. 1/8 3/8 5/8 7/8 1/7 2/7 3/7 4/7 5/7 6/7 1/6.. 2019. 12. 20.
프로젝트 오일러 #71 순서가 있는 분수 어려움 정도는 10%로 크게 어려움 없이 풀 수 있는 문제입니다. 분수문제가 연속으로 3문제가 나와있는데, 기약분수를 만드는 것만 잘 이해하면 풀 수 있는 문제들입니다. 아래는 이 문제의 원문이 있는 곳입니다. https://projecteuler.net/problem=71 Problem 71 - Project Euler Consider the fraction, n/d, where n and d are positive integers. If n projecteuler.net 분수를 표현하는 방법은 여러가지가 있을 수 있습니다. 그 중 유일한 표현법을 얻기 위해서 기약분수를 사용합니다. 기약분수로 표현을 할 때, 우리는 분수의 크기를 비교할 수 있죠. 그런데, 분모의 상한을 주게되면, 자연수를 나열하듯이 .. 2019. 11. 18.
728x90