1부터 5까지의 숫자를 영어로 쓰면 one, two, three, four, five 이고,
각 단어의 길이를 더하면 3 + 3 + 5 + 4 + 4 = 19 이므로 사용된 글자는 모두 19개입니다.
1부터 1,000까지 영어로 썼을 때는 모두 몇 개의 글자를 사용해야 할까요?
참고: 빈 칸이나 하이픈('-')은 셈에서 제외하며, 단어 사이의 and 는 셈에 넣습니다.
예를 들어 342를 영어로 쓰면 three hundred and forty-two 가 되어서 23 글자,
115 = one hundred and fifteen 의 경우에는 20 글자가 됩니다.
Click각 단어의 길이를 더하면 3 + 3 + 5 + 4 + 4 = 19 이므로 사용된 글자는 모두 19개입니다.
1부터 1,000까지 영어로 썼을 때는 모두 몇 개의 글자를 사용해야 할까요?
참고: 빈 칸이나 하이픈('-')은 셈에서 제외하며, 단어 사이의 and 는 셈에 넣습니다.
예를 들어 342를 영어로 쓰면 three hundred and forty-two 가 되어서 23 글자,
115 = one hundred and fifteen 의 경우에는 20 글자가 됩니다.
이것도 일반화를 해볼려다가 여러가지 생각해야 할게 너무 많아 그냥 포기.
각각의 수가 얼마나 들어가는지를 암산하여 각 수의 영어 알파벳 숫자와 곱해주었습니다.
<script>
function p017(){
var nums = {
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
10: "ten",
11: "eleven",
12: "twelve",
13: "thirteen",
14: "fourteen",
15: "fifteen",
16: "sixteen",
17: "seventeen",
18: "eighteen",
19: "nineteen",
20: "twenty",
30: "thirty",
40: "forty",
50: "fifty",
60: "sixty",
70: "seventy",
80: "eighty",
90: "ninety",
100: "hundred",
1000: "thousand"
};
var l = 0;//46684//17524
var t = nums[100].length;
//1의 자리 : 100당 9번씩 10번 + (100의자리) 100번 + (천의자리) 1만 1번.
for (var i = 1; i < 10; i++)
l += nums[i].length * ((9 * 10) + 100 + ((i == 1) ? 1 : 0));
//10~19 : 100당 1번씩 10번.
for(var i=10; i<20; i++)
l += nums[i].length * (1*10);
//10의 자리 : 100당 10번씩 10번.
for(var i=20; i<100; i+=10)
l+= nums[i].length * (10*10);
//100 : 100당 100씩 9번.
l += nums[100].length * (100*9);
//1000 : 1 번.
l += nums[1000].length * 1;
//and : 100당 99번씩 9번.
l += "and".length * (99*9);
return l;
}
</script>
댓글 없음:
댓글 쓰기