TIL 23.4.21// 알고리즘 3주차 c++ 문제풀이 지속중.

 

 

강의를 보다가 long long 범위를 넘어서는 경우에 대해서 보다보니 __int128을 사용하라는 얘기를 보게되었다.

그래서 그와 관련되어서 궁금한 점이 생겨서 검색해보았다. 

 

이와 관련하여서 궁금해서 long long 과 __int128의 차이에 대해서 검색해보게 되었다. 

 

지수로 표현되는 범위에서 아주아주 커다란 차이를 보인다

이때 int 형의 경우 2^31-1 까지였는데, 이게 21억, 그리고 long long의 경우 2^63-1이고 이게 922경 이었으니까

--int128경우 정말정말 커다란 수를 다룰 수 있을 것이다. 

 

지금까지 내가 본 문제에서 long long의 범위를 넘어서는 문제의 경우(하노이 탑 n=100까지 문제) c++의 경우 string으로 문제를 풀었는데, 오히려 이렇게 큰 수의 경우 그냥 python을 활용하는것이 훨씬 쉬울것이다. 

일단은 __int128에 대해서 알아두기는 하되, 사용해야 하는 경우는 파이썬을 사용하자. 

 

 

+++++++++++++++++++++++++++++++++++++++++++

 

 

1629번 문제를 푸는데 내 컴퓨터 상에서는 돌렸을때는 원하는 결과물을 얻는 코드를 작성한건 맞는것 같은데,

막상 제출하면 메모리 초과가 나와서 현재 어떤식으로 고쳐야 할지에 대해서 고민하고있다. 

이 와중에 과연 int를 몇개를 만들면 128mb를 초과하게 되는지에 대해서 궁금해서 지피티에 질문해보았다. 

 

검색 결과 3천 2백만개를 사용하면 대략 128mb를 사용하게 된다고 한다

3천 2백만개면 현재 문제에서 제시하는 경우의 수가 21억을 21억회 곱하는 수준까지 나오기 때문에 충분하게 메모리 초과를 할 수 있을 상황으로 보여진다. 

일단은 3천2백만개라는 숫자를 기억해보고 이후에는 메모리가 적게 표현되는 문제의 경우 메모리 초과를 어떤식으로 피할지에 대해서 생각해 보도록 하자. 

 

 

  Comments,     Trackbacks