콘텐츠로 건너뛰기
Home » BigInt

BigInt

Swift – 큰 수의 덧셈과 곱셈 구현하기

프로젝트 오일러의 몇몇 문제는 큰 수의 덧셈이나 곱셈의 계산이 필요한 경우가 있다. 파이썬이나 하스켈과 같이 정수타입이 기본적으로 바이트 크기의 제약이 없는 언어에서는 이는 별다른 문제가 되지 않지만, 그외의 언어에서는 좀 까다로운 문제가 된다.  예를 들어 50자리 숫자 100개의 합을 계산하는 문제 같은 경우에 파이썬에서는 50자 짜리 숫자 문자열을 int 타입으로 캐스팅해서 합해버리면 그만이지만, Swift와 같은 언어로 이렇게 풀 수는 없다. 해당 문제의 풀이에서는 손으로 덧셈을 해 나가는 방식을 코드로 구현해서 풀었는데, 이후로도 큰 수를 계산해야 하는 문제가 자주 나온다. 수가… 더 보기 »Swift – 큰 수의 덧셈과 곱셈 구현하기

오일러 프로젝트 16

215 = 32768 의 각 자리수를 더하면 3 + 2 + 7 + 6 + 8 = 26 입니다. 21000의 각 자리수를 모두 더하면 얼마입니까? http://euler.synap.co.kr/prob_detail.php?id=16 접근 이 문제는 13번처럼 큰 정수를 다룰 수 있는지를 확인하는 문제이다. 사실 같은 수끼리 더하면 두 배가 되므로, “1” 부터 시작해서 s_add() 함수에 같은 값을 두 번 넣어서 두 배하는 동작을 1,000번 하면 간단히 해결된다. 파이썬은 큰 정수를 지원하므로 2의 1000 제곱을 계산해서 문자열로 바꾼 후, 다시 각 숫자를 정수로 바꿔서 합산한다. 어떤 수를… 더 보기 »오일러 프로젝트 16