-
PS미세먼지 팁: 정수 자릿수 구할 때 Math.log10() + 1?PS 2022. 5. 24. 17:36
미먼Tip : 정수 자릿수 구하는 법 (Math.log10() + 1 말고)
'숫자 자릿수 구하기'라고 구글링 하면,
int cnt = Math.log10(자릿수 구할 숫자) + 1
를 쓰라고 많이들 알려주세요. 그렇게 해도 가능합니다. 하지만 다른 방법은 없을까요?의문
자릿수를 구하다가 한 가지 의문이 들었어요. 보통 자릿수는
int
형으로 필요해서 구하게 되는데요. 넘겨주는 숫자의 타입도int
형이고요.자릿수 구할 값을 -> Math.log10()에 넘겨주고 -> int값으로 리턴
을 받는건데
그렇게 되면 데이터의 타입이int -> double -> int
로 두 번 오토박싱이 일어날 거란 생각이 들었습니다.그래서 이런 생각이 들었어요.
int cnt = String.valueOf(자릿수 구할 숫자).length()
와 같은 방식으로 해보면 어떨까?int
에서String
으로 한번 래핑하고 나면, length()는 String class의 필드를 불러오는 것 뿐이니까 더 빠르지 않을까? 형변환이 한번이니까.
아니면, 두 번의 형변환이더라도 int -> double -> int는 숫자니까 서로 빠르게 박싱이 일어날까?결과
그래서 그냥 돌려봤습니다.
loop에 넣고 1천만번 이상 돌려보니,String.valueOf(자릿수 수할 숫자).length()
가 두 배 이상 빨랐습니다. (캡쳐한 이미지를 깜빡했네요...)반복을 많이 하고, 시간제한이 촉박하다면 손에 익은
Math.log10() + 1
말고String.valueOf().length()
도 써보세요!'PS' 카테고리의 다른 글
모각코PS / 프로그래머스 Lv2 소수 찾기 (2) 2022.05.28 모각코PS / 백준 17478 재귀함수가 뭔가요? (0) 2022.05.25 모각코 PS / 백준 1475 방 번호 (0) 2022.05.25 모각코 PS / 카카오 2020 신입 블라인드 채용 1차 문자열 압축 (0) 2022.05.21 모각코 PS스터디 / 백준 1783 병든 나이트 (0) 2022.05.21 모각코 PS스터디 / 백준 2875 "대회 or 인턴" (0) 2022.05.21