[ 백준 2501 : 약수 구하기 ]
한 자연수의 약수를 구한 후 약수 중 k번째로 작은 수를 구하면된다.
일단 약수 구하는 식은 뻔하고 약수나 소수 구하는 소스는 이전에도 많이 게시했었는데 그래도 다시 한번 로직을 올려본다.
-약수 구하는 로직-
약수를 구할 자연수 N에 대해서 총 시간 복잡도는 SQRT(N) [N 제곱근] 이 걸린다.
자명한 시간복잡도인데 16라는 수를 생각해보자.
16의 약수 = 1 2 4 8 16 이렇게 나오는데
16은 1로 나누어떨어지고 1로 나눌때의 몫이다. 이렇게 1과 16이 구해진다.
16은 2로 나누어떨어지고 2로 나눌때의 몫은 8이다. 이렇게 2과 8이 구해진다.
16은 4로 나누어떨어지고 4로 나눌때의 몫은 4이다. 이렇게 4가 구해진다.
이제 4보다 큰 수는 없다. 4보다 큰수는 이미 4보다 작은수로 나눴을때의 몫으로 구해졌기때문이다.
-끝-
그럼 이런 방식으로 약수를 모두 구한다. N의 범위가 1만이므로 O(100)안에 구해지니까 시간은 통과
그리고 소팅을 한다. 그럼 최악에 100*log100
그 후 k-1번째 인덱스의 수를 출력하면된다.
이 블로그 검색
피드 구독하기:
댓글 (Atom)
-
[ 백준 1024 : 수열의 합 ] 간만에 푼 백준~ 쉬운 문제라고 생각하고 풀었는데 계속 틀려서 봤더니 예외 처리를 한 개 안해준것이 있었다. 만약 이 글을 보기전에 풀었을때 채점이 60%에서 자꾸 틀린다면 90%확률로 나와 같은 실수를 ...
-
[백준 1091 : 카드 섞기 ] 이 문제도 5달 전에 풀었다가 포기했었던 문제였나보다. 오늘 틀렸던 문제 다시풀기 중 풀게 되었다. 문제를 읽는데 헷갈려서 머리카락 한 10번은 쥐어짠듯. 아마 전에 풀었을때는 P배열이 각 카드가 최후에 ...
-
아마 나와 비슷한 나이대의 학생들은 대부분 대학에서 수업을 들으면서 꾸준하게 들었을 것 같다. 물론 내가 그래서 그렇다. 4차산업~ IT의 시대~ 빅데이터~ 데이터 마이닝~ 하지만 컴퓨터 관련 전공자가 아니고 더군다나 공학 계열 전공자가 아니라...
[백준 16236] 아기 상어
[ 백준 16236 : 아기 상어 ] 2018 삼성전자 sw직무 하반기 기출문제입니다. 역대 삼성전자 기출문제가 그렇듯 역시나 BFS,DFS,완탐,DP,단순구현 입니다. 저는 문제를 단순히 BFS로 풀어갔습니다. 조건만 잘 지킨다면 한번에 ...
댓글 없음:
댓글 쓰기