밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
int의 범위
참고) 대입문을 사용할 때 8진수는 0을 앞에 붙여서 입력하고, 16진수는 0x를 붙여서 입력합니다. 예) a = 0xff; //a에 16진수 ff를 넣음. ff는 십진수로 255입니다.
codeup.kr
주의해야 할 점
저처럼 int 범위를 알지 못하는 사람은 그냥 문제 설명을 보거나, 검색을 해봅시다.
모르는데 오랫동안 문제를 붙잡고 있는 것보다, 답을 보고 공부하는 게 훨씬 낫습니다.
생각한 풀이 과정
- 문제 설명에 있는 2진수를 사용해 int 범위의 최솟값을 구하고 변수 int_min에 저장합니다.
- 문제 설명에 있는 2진수를 사용해 int 범위의 최댓값을 구하고 변수 int_max에 저장합니다.
- int 범위의 최솟값, 최댓값 순서대로 공백으로 구분해 출력합니다.
제출한 파이썬 코드
# int 범위의 최솟값을 저장하는 변수를 선언합니다.
int_min = -int('0b10000000000000000000000000000000', 2)
# int 범위의 최댓값을 저장하는 변수를 선언합니다.
int_max = int('0b01111111111111111111111111111111', 2)
# int 범위의 최솟값, 최댓값을 공백으로 구분해 출력합니다.
print(int_min, int_max)
제출 결과
느낀 점
저는 int의 범위를 기억하고 있지 않습니다.
문제의 설명대로 모르면 검색이라도 하면 됩니다.
그런데 파이썬의 int 범위에 대해 검색해보고 밑의 링크를 읽어봤습니다.
Maximum and Minimum values for ints
I am looking for minimum and maximum values for integers in python. For eg., in Java, we have Integer.MIN_VALUE and Integer.MAX_VALUE. Is there something like this in python?
stackoverflow.com
파이썬 3에서는 int는 범위에 제한이 없다고 답변이 나와있습니다.
그리고 인터프리터에서의 word의 크기 즉, 4바이트의 크기를 알고 싶다면 sys.maxsize를 사용하면 된다고 합니다.
그런데 sys.maxsize를 사용해서 int의 최솟값, 최댓값을 제출해보니 잘못된 풀이 결과가 나왔습니다.
다음으로는 문제 설명에 있는 기다란 2진수를 사용해서 int 범위의 최솟값과 최댓값을 출력해봤는데
이건 맞는 결과로 나왔습니다.
뭐가 옳은 건지 저도 정리가 안되네요...😨😨
중간에 최댓값, 최솟값 순서대로 출력해서 잘못된 풀이 결과를 보기도 하고,
컴퓨터 과학에 대한 기초가 부족한 것 같다고 생각하니 머릿속이 복잡하네요.
이 문제에 대한 묻고 답하기 게시판도 다른 문제에 비해 글 수가 많은 걸 보니
다들 고민을 많이 하는 문제인가 봅니다.
댓글