본문 바로가기

Algorithm/알고리즘 설명14

[알고리즘] 자바로 수학 log 구하기 log 성질 $\log _{3}{5} = \frac{\log {5} }{\log {3}}$ //둘 다 결과는 같다. System.out.println(Math.log10(5) / Math.log10(3)); System.out.println(Math.log(5) / Math.log(3)); 응용 $x^{6} = 64$ 의 $x$ 구하기 $6 = log _{x}{64}$ → $6 = \frac{log _{10}{64}}{log _{10}{x}}$ → $log _{10}{x} = \frac{log _{10}{64}}{6}$ 결론 : $x = 10 ^ {\frac{log _{10}{64}}{6}}$ System.out.println(Math.pow(10, Math.log10(64) / 6)); //결과 : 2.0 2020. 10. 17.
[알고리즘] 10진수 → 2진수 변환 //10진수 -> 2진수 int quotient = 3; ArrayList list = new ArrayList(); while(quotient > 0) { //나머지값 계산후 입력 int remainder = quotient % 2; list.add(remainder); quotient /= 2; } //역순 출력 for(int i = list.size()-1;i>=0;i--) System.out.print(list.get(i)); //결과 : 11 2020. 10. 16.
[알고리즘] 코딩테스트 전, 알고리즘 문제 유형 정리 ※ 생각 나는 대로 적는 중... (잘못된 부분이 있을 수도 있음) 브루트 포스 (완전 탐색) N의 범위를 잘 파악해서 1초 미만으로 해결이 가능한 경우 10! 이하의 시간복잡도인 경우 (재귀 호출 시 깊이가 10 이하인 경우) 1. 백트랙킹 순열 : 순서 고려 O, 값의 중복 X (시간복잡도 : O(N!) ) 중복 순열 : 순서 고려 O, 값의 중복 O (시간복잡도 : O(n ^ r), 여기서 r은 재귀의 깊이 ) 조합 : 순서 고려 X, 값의 중복 X 중복 조합 : 순서 고려 X, 값의 중복 O 재귀 호출 시 깊이를 보고 시간복잡도 파악 가능하다. 2. BFS 출발값이 존재 도착값까지 '최소' 시간 or 거리 or 횟수 만에 도착해야하는 경우 간선의 가중치(노드 간 거리)가 전부 같은 경우 (무가중 .. 2020. 10. 7.
[알고리즘] 소수 구하기 (에라토스테네스의 체) 소수 소수 : 약수가 해당 숫자 본인과 1만 존재하는 수를 의미한다. (영어로는 Prime Number) EX) 2, 3, 5, 7 ..... (짝수 중에선 2가 유일한 소수이다.) 에라토스테네스의 체 모든 자연수는 단 하나의 소수들의 곱으로 표현된다는 특징을 이용하여 일정 범위의 수들이 소수인지 여부를 판단하는 방법이다. 즉, 소수의 곱이 되는 수는 소수가 아닌 것을 이용하여 소수가 아닌 수들을 걸러나가는 방법이다. 2가지 방법이 있는 데 순서의 차이일 뿐 어느 것을 써도 무방하다. 1. 소수 구한 후 결과 반전 boolean형 배열을 선언할 때는 초기값이 false로 채워져있기 때문에 우선 소수가 아닌 수들에 true를 해놓고 나중에 반전을 시키는 방법이다. int number = 10000; boo.. 2020. 10. 5.