본문 바로가기
반응형

프로젝트 오일러69

42. 프로젝트 오일러 #42 : 삼각수 단어 이 문제는 알고리즘이 크게 필요하지는 않습니다.그래서인지 문제의 난이도는 5%입니다. 문제 자체도 상당히 가벼운 편이고요. 검사해야할 단어의 갯수도 많지 않습니다. 이 문제는 영어문자를 A->1, B->2, .. 형식으로 단어를 바꾸면, 숫자의 나열이 되는데, 이 숫자들의 합이 삼각수인 가만 검사하면 됩니다. 삼각수라는 것은 1~n까지의 합 형태가 되면 됩니다. 1, 3, 6, 10, 15, 21, ... 등등이 모두 삼각수입니다. 사실 단어의 수가 길지 않으므로, 간단하게 삼각수 테이블을 만들고 해당 수가 삼각수인지 검사하는 것이 가장 간단하겠죠. 단어의 길이가 40글자라고 해도 글자 하나당 26까지밖에 없으므로 대략 1200까지의 삼각수만 구하면 됩니다. 그러고 나서 해당 값이 채워졌는지만 검사하면 .. 2016. 5. 24.
41. 프로젝트 오일러 #41 : 팬디지털 소수 이 문제의 난이도 5%입니다. 그렇게 어렵지 않은 문제이죠. 문제를 살펴보면 다음과 같습니다. 우리는 1부터 n까지 정확하게 한번씩만 사용한 n자리 숫자가 있다면, 이것을 팬디털(pandigital) 숫자라고 부릅니다. 예를 들어서 2143은 4자리 팬디지털 숫자이면서, 또한 소수입니다. 가장 큰 n자리 팬디지털 소수는 얼마일까요? 일단 팬디지털이라는 것을 알았으면, 우리는 간단하게 1~9까지 한번만 사용해서 이 숫자를 구하면 됩니다. 팬디지털을 만들 수 있는 가장 큰 자릿수는 9자리입니다. 왜냐하면 그 이상부터는 두자리숫자가 될 수밖에 없기 때문에 팬디지털 정의에 어긋납니다. 프로그램은 9자릿수부터 만들 수 있는 모든 팬디지털수를 만듭니다. (사실 이것을 1부터 n까지 배열하는 순열수입니다.) 순열 수.. 2015. 10. 27.
34. 프로젝트 오일러 #34 : 자릿수의 팩토리얼 합 연달아서 난이도 5% 정도의 문제네요. 이번 문제는 각각의 자릿수의 팩토리얼 합이 자신이 되는 숫자를 찾는 것입니다. 예를 들어서 145란 숫자는, 가 됩니다. 이번 문제는 이와 비슷한 숫자들의 합을 구하는 것입니다. 이제 프로젝트 오일러를 이정도까지 진행하셨다면, 십진수의 자릿수를 빼는 것에는 다들 어느정도 경험이 있을 것이라 생각합니다. 제 경우에는 각 자릿수의 팩토리얼 값을 미리 저장해서 사용했습니다. 9! = 362880 이므로, 대충 6자릿수자일거라고 생각하면 됩니다. 그래서 숫자범위를 그렇게 정했습니다. 제가 작성한 프로그램은 다음과 같습니다. #include int main() { int facts[10] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 36280.. 2015. 4. 13.
프로젝트 오일러 #33 : 약분하는 추가 숫자 #33의 난이도는 5%네요. 쉬운 등급으로 설정된 문제입니다. 이 문제는 분자와 분모에 같은 숫자를 추가하면, 약분이 되고, 약분된 결과가 원래 분수와 같으면 됩니다. a/b 꼴의 분수에서는 분자 분모 양쪽 모두 뒤에 0을 추가하면 당연히 같은 값이 되겠죠. 이것은 당연한 해이므로 제해야 합니다. 그러려면, 분자에는 뒤에, 분모에는 앞에 어떤 숫자를 넣어주어야 합니다. a/b 라는 분수에 분자에는 앞에 분모에는 뒤에 숫자 x를 넣어준다면, 그 반대라면, 형태가 될겁니다. 결과는 비례식을 이용해서 단순하게 곱하면 나오므로, 푸는데에는 별 지장이 없을겁니다. 2015. 4. 13.
32. 프로젝트 오일러 #32 : 팬디지털 곱 32번 문제는 어려움 정도가 5%라 상당히 난이도가 낮은 문제네요. 이 문제는 일단 다음과 같은 접근을 생각했습니다. 어떤 수 n이 있습니다. 이 수에 대한 약수를 구합니다. 그러면 두 수를 구할 수 있겠죠. 그러면 이 수에 대해서 팬디지털인지 검사하면 됩니다. 두 수를 먼저 만든 후 곱하는 것보다는 하나의 수에 대해서 인수분해를 하는 것이 복잡도가 덜하겠다는 생각이 들더라고요. 팬디지털을 검사하는 로직은 일단 간단하게 했습니다. 사실 이 부분이 제일 핵심이기도 하고요. 팬디지털은 비트플래그를 이용합니다. 비트플래그에 중복이 생기면 팬디지털이 아닌 것이 되고요. 모두 다 체크되었다면 완벽하게 팬디지털이 되겠죠. 팬디지털인지 검사하기 위해서 검사하는 로직은 다음과 같습니다.첨부된 소스는 참고용으로만 봐주세.. 2015. 4. 13.
프로젝트 오일러 사이트 친구 등록 프로젝트 오일러 사이트에는 친구를 등록할 수 있는 것이 있네요.등록된 친구의 경우, 현재 진행정도를 알아볼 수 있지만, 커뮤니티도 없고요. 아쉬운 점들이 꽤 많이 있지만,... 저를 친구로 등록할 수 있는 키를 올립니다.필요하신 분 등록해주세요. ^^ 제 친구 키 : 714246_14c0fa3eb63335b3dc6b8ef5624fd4d0 2015. 4. 5.
728x90