일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 아동수당 금액
- 내맘대로 플러스
- 출산장려금 첫째
- 서초구 출산 장려금
- skt 혜택
- 2018 임신 출생 장려금
- 출사장려금 셋째
- 2018 임신 출산 장려금
- 아동수당 신청
- skt gold
- 2018 정부지원 산후도우미
- 정부지원 산후도우미
- 자바
- 모빌 사용시기
- 내맘대로 플러스 설치
- java
- 중의소득 100%
- 서울 2018 정부지원 산후도우미
- 출산장려금 둘째
- 흑백모빌 칼라모빌
- 인천 출산축하금
- 서울 산후도우미
- 아동수당 대상
- I-mom 출산축하금
- 인천 출산장려금
- 모빌 사용법
- 강동구 출산장려금
- 2018 산후도우미
- 칼라모빌 사용시기
- 흑백모빌 사용시기
- Today
- Total
좋은 인연, 좋은 발견
숫자개수 구하는 알고리즘입니다. 본문
10,100,100,10000 단위에 8 이라는 숫자가 몇개가 있는지 세어보는 방법은 여러가지가 있습니다.
숫자를 하나하나 적어보면서 세어보는 방법이 있겠으나 좀 더 간결한 방법을 찾고자 합니다.
일단, 간단히 10에서 10000까지 각 단위에 8이라는 숫자가 몇개인지 세어보겠습니다.
10 단위에 8이라는 숫자는 1개 입니다.
100 단위에 8이라는 숫자는 20개 입니다.
1000 단위에 8이라는 숫자는 300개 입니다.
10000 단위에 8이라는 숫자는 4000개 입니다.
최초에 알고리즘을 만들게 된건 호기심이었습니다.
단순히 루프를 하여 값을 구할 경우 굉장한 트래픽을 유도하게 됩니다.
단위가 10000 이라 그렇지 1000000000 일경우 계산하는데에 걸리는 시간이 꽤 걸립니다. 직접해보시면 알 수 있습니다.
이러한 문제를 해결해보고자 하는게 첫번째 이유겠지만, 필자는 단순히 호기심에 시작해보았습니다.
자, 이제 단위별 개수가 몇개인지 답을 얻었습니다. 이제 남은 건 대입입니다. 보통 수학공부를 할 때에는 공식에 무엇인가를 대입하여 값을 구하는 방식이 대부분이었을 것입니다.
그런데 지금은 공식이 없습니다. 어떻게 대입을 하라는 건지 의문이겠으나, 간단히 생각해보면 됩니다.
모든 수식은 기본에서 시작합니다. +,-,*,/ 의 사칙연산을 말합니다.
첫번째 전제, 10단위에 8이라는 숫자는 1개 입니다.
8/10+1 = 1 이런식으로 대입을 해보는 것입니다.
하지만 구해야하는 숫자는 1개입니다. 그러므로 위 공식은 맞지 않습니다.
공식을 다시한번 만들면 10 / 10 입니다.
앞에 10은 단위이고 뒤에 10은 8이라는 숫자는 반드시 10에 포함되므로 10을 주었습니다.
두번째 전제, 100 단위에 8이라는 숫자는 20개 입니다.
단위 / 10 이라는 공식에 대입해보면 100 / 10 이 됩니다. 구한 결과는 10이 됩니다.
답이 맞지 않았습니다. 이제 한번 더 고민의 시간입니다.
10이라는 값이 20이 되려면 * 2를 해주면 해결될 것입니다.
이렇게 공식을 바꿔서 대입해보면 (100 / 10)*2 가 됩니다. 구한 결과는 20이 됩니다.
세번째 전제, 1000 단위에 8이라는 숫자는 300개 입니다.
(단위/ 10) * 2 라는 공식에 대입해보면 (1000 / 10) * 2 가 됩니다. 구한 결과는 200이 됩니다.
답이 맞지 않았습니다. 이제 한번 더 고민의 시간입니다.
200이라는 숫자가 300이 되려면 + 100을 해주면 해결될 것입니다. 하지만 모든 전제가 맞아야하기 때문에 이런 방법은 맞지 않습니다.
그런데 말입니다. 전제를 풀다보면 [(단위 / 10) * 특정값]이란 공식이 자연스럽게 만들어지게 됩니다.
이 특정값은 10일때는 1이고 100일때는 2이고 1000일때는 3이 됩니다.
학창시절 수학을 좀 해본사람이라면 log에 대해 알 것입니다. 바로 log를 이용하면 저런 값을 얻을 수 있습니다.
단위의 제곱값을 구해서 특정값에 대입하면 될 것 같습니다.
네번째 전제, 10000 단위에 8이라는 숫자는 4000개 입니다.
새로운 공식 [(단위 / 10) * 단위의 제곱 수]에 대입해보겠습니다.
(10000 / 10) * log 10000 의 결과는 4000 입니다.
우연히 쉽게 공식을 만들어 볼 수 있었습니다.
'it' 카테고리의 다른 글
인공지능 그리고 머신러닝 (0) | 2018.05.17 |
---|---|
JAVA 언어를 잡기 위해 생각해 볼 것들 (0) | 2018.05.15 |
자바의 변수 (0) | 2018.05.07 |
자바의 클래스 (0) | 2018.05.06 |
JVM, JRE, JDK의 차이는 무엇인지 알아봅시다. (0) | 2018.05.02 |
객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 등장 (0) | 2018.05.01 |
자바에 대해 알아봅시다. (0) | 2018.05.01 |
다익스트라 알고리즘 (0) | 2018.04.18 |