Project Euler Problem16
2015. 2. 24. 21:21ㆍ프로그래밍/알고리즘
728x90
728x90
Power digit sum
Problem 16
215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
What is the sum of the digits of the number 21000?
나의 풀이)
2의 1000승을 표현하기는 매우 어렵다.
기본적으로 몇 백자리의 수가 나오기때문에.. 표현할 수 있는 자료형이 없다.
게임 아카데미 동기가 라지넘버 라이브러리를 쓰면 된다는데..
찾아보니 gmp인거 같은데.. 설치가 귀찮아 이 방법은 접는것으로...
처음 배열로 구현하려고 str[500]만큼의 배열로 선언하여 계산했다.
고정된 배열 길이로 구하려니.. 뒤에 자리들 처리해주는게 여간 성가신게 아니었다.
그래서 벡터나 리스트 중에 뭐 써볼까 하다가 리스트로 작성해보았다.
사실 백터가 이번 문제에 더 어울렸지만..
1. 각 자리 수 * 2
2.1 10이 넘어가는 자리 수 %10(나머지 저장), 다음 자리 +1
2.2 다음 자리가 없다면 노드 1로 추가
3. sum(list) 출력
사실 대부분의 사람들이 비슷한 형태로 풀었다. 알고리즘은 대부분 거기서 거기.
역시 배열로 충분히 구현할 수 있는걸 리스트로 구현했더니 속도가 조금 문제가 있었다.
이더레이터에 노드 추가 연산 등등 오버헤드로 인한 속도저하가..
그 외에는 스트링에 때려박아서 한 개씩 잘라 계산하는 방법도 있었다.
2의 10000만 승을 출력해보았다.
728x90
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘] 플로이드 워샬 알고리즘 (5) | 2015.07.11 |
---|---|
Project Euler Problem8 (0) | 2015.02.28 |
Project Euler Problem15 (0) | 2015.02.17 |
Project Euler Problem10 (0) | 2015.02.15 |
Project Euler Problem9 (0) | 2015.02.15 |
Project Euler Problem5 (0) | 2015.02.12 |
Project Euler Problem7 (0) | 2015.02.05 |