2^31-1을 표현하는 16진수 표현법.

아주 커다란 수를 가장 끝값으로 한다거나 할때, 2^31-1을 이용해야 하는 경우가 있다. 

예를들어 지금 접하고 있는 boj 1654번 랜선 자르기 문제에서 랜선의 길이가 최대 2^31-1이 가능하기 때문에 그 값을 이용하여서 탐색을 하는 형태로 문제를 해결할 수 있다(물론 입력으로 받는 랜선의 max값을 max함수를 이용해서 찾아서 사용하는 풀이법으로도 풀 수 있다)

이런경우 2^31-1을 이용하여서 풀이할때, 이 값을 0x7fffffff 으로 작성하여서 사용할 수 있다. 

이 값은 16진수로 2^31-1 을 표현한 것이 된다. 

 

이때 비트쉬프트를 활용해서 (1<<31)-1 형태로 작성한 값과 0x7fffffff 로 작성한 수가 있을텐데 이 두 수에 대해서 한번 검색해보았다. 

 

 

실제로 boj 1654번 문제를 풀때

ll en=0x7fffffff; 으로 작성해도 통과하고, 

ll en=(1<<31)-1; 로 작성해도 통과된다. 

고로 0x7fffffff 와 (1<<31)-1은 같다. 

둘다 사용할 수 있으니까 두가지 모두 기억하고 있다가 만약 2^31-1 의 수를 사용해야 할때는 이 값들을 이용하도록 하자. 

 

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

  Comments,     Trackbacks