biginteger없이 factorial 100! 을 기본자료형으로 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
int carry = 0;
HashMap<Integer, Integer> q = new HashMap<Integer, Integer>();
q.put(0, 1);
for (int j = 1; j <= 100; j++) {
int size = q.size();
for (int i = 0; i < size; i++) {
int temp = q.get(i);
temp = (temp * j) + carry;
carry = temp / 10;
q.put(i, (temp % 10));
}
while (carry != 0) {
q.put(size, carry % 10);
carry /= 10;
size++;
}
}
for (int i = q.size() - 1; i > -1; i--) {
System.out.print(q.get(i));
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
시간복잡도 O(n (log n)^2)
1. hashmap에 숫자를 연산한후 숫자 하나씩 집어넣음
2. 하위 for문의 연산이 끝난 후 carry에 값이 남아있으면 추가적으로 등록시킨다.
3. carry는 숫자 하나씩 집어넣기 위해 10으로 나눈 후 몫을 담고 있는 변수
4. 숫자가 역순으로 들어갔기 때문에 출력할땐 역순으로 뽑으면 된다.
'개발 > algorithm' 카테고리의 다른 글
leetcode 4번문제 Median of Two Sorted Arrays (0) | 2020.04.14 |
---|---|
leetcode 3번문제 Longest Substring Without Repeating Characters (0) | 2020.04.14 |
leetcode 445번문제 add two numbers 2 (0) | 2020.04.14 |
leetcode 2번문제 add two numbers (0) | 2020.04.14 |
leetcode 653 Two Sum IV - Input is a BST (0) | 2020.04.14 |