2023. 6. 8. 03:58, 알고리즘/BOJ
아주 커다란 수를 가장 끝값으로 한다거나 할때, 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 의 수를 사용해야 할때는 이 값들을 이용하도록 하자.
+++++++++++++++++++++++++++++
'알고리즘 > BOJ' 카테고리의 다른 글
boj 16401번 문제를 풀며 접하게된 *max_element(l,l+n);의 활용. (0) | 2023.06.09 |
---|---|
boj 1654 랜선 자르기 문제를 (st+en)/2 형태로 작성할 수 있는 방법에 대한 참고 블로그. (0) | 2023.06.09 |
중복 원소 제거를 위한 sort(), unique(), earse() 함수의 활용. (0) | 2023.06.07 |
c++ binary_search , lower_idx, upper_idx 코드 구현 모음과 차이점 비교. (0) | 2023.06.07 |
이분탐색, 이진탐색, 그리고 이진검색 트리 (0) | 2023.06.07 |
Comments, Trackbacks