[Project Euler 38] 어떤 수에 (1, 2, ... )를 곱해서 이어붙여 얻을 수 있는 가장 큰 1 ~ 9 팬디지털 숫자
숫자 192에 1, 2, 3을 각각 곱합니다. 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576 곱한 결과를 모두 이어보면 192384576 이고, 이것은 1 ~ 9 팬디지털(pandigital)인 숫자입니다. 이런 과정을 편의상 '곱해서 이어붙이기'라고 부르기로 합니다. 같은 식으로 9와 (1, 2, 3, 4, 5)를 곱해서 이어붙이면 918273645 라는 1 ~ 9 팬디지털 숫자를 얻습니다. 어떤 정수와 (1, 2, ... , n)을 곱해서 이어붙였을 때 얻을 수 있는 가장 큰 아홉자리의 1 ~ 9 팬디지털 숫자는 무엇입니까? (단 n > 1) 이 문제를 풀려고 미뤄뒀던 32번 팬디지털 문제를 풀었다. 예전에는 끙끙거리면서 결국 못 풀었는데 요즘 그래도 늘고 있는지 둘 다 ..
2016. 5. 4.
탐색 알고리즘 - 선형탐색, 이진탐색, 이진트리 탐색
1. 선형탐색(Linear Search Algorithm / Sequential Search Algorithm) - 리스트에서 특정한 값을 찾는 알고리즘의 하나. 리스트에서 찾고자 하는 값을 맨 앞에서부터 끝까지 차례대로 찾아 나간다. - 검색할 리스트의 길이가 길면 비효율적이지만, 검색방법 중 가장 단순하여 구현이 쉽고, 정렬되지 않은 리스트에서도 사용할 수 있다. - 예를 들어, 알파벳_list라는 리스트가 있다고 치자. 1알파벳_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']cs 이렇게 10개의 알파벳 string을 가지고 있다. 이 경우 우리가 하나의 알파벳을 뽑아낸다고 할 때, 최고의 경우(best case)는, 'a'를 뽑아낼 때이다. 뽑..
2016. 5. 3.