오늘도 따라하며 배우는 알고리즘!! Keep Going!
52장. Ugly Numbers
어떤 수를 소인수분해 했을 때 그 소인수가 2 또는 3 또는 5로만 이루어진 수를 Ugly Number라고 부른다. Ugly Number를 차례대로 적어보면 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15 … 이다. 숫자 1은 Ugly Number의 첫 번째 수로 한다.
자연수 N이 주어지면 Ugly Number를 차례로 적을 때 N번째 Ugly Number를 구하는 프로그램을 작성하세요.
입력
첫 줄에 자연수 N(3<=N<=1500)이 주어진다.
출력
첫 줄에 N번째 Ugly Number를 출력하세요.
1 |
|
잘 돌아간다. 근데 숫자를 크게 하면 time out error날 듯. (1초 안에 안나온다.) 처음에는 dynamic programming을 사용하면 될 것 같다는 느낌이 들긴 했는데, 어떻게 DP를 사용해야할지 감이 안온다. 선생님 강의를 확인해 보아야 할 듯!
선생님 코드
1500 입력 하면 8억 5천까지의 수를 다 소인수 분해해야함 ㅋㅋㅋㅋㅋ 오마이갓~
투포인트 알고리즘을 이용하면 된다.
1 |
|
p2, p3, p5라는 포인터를 주었다. 각 배수의 값대로 슝슝 하면 훨씬 빠르게 돌 수 있음!!
53장. K진수 출력
10진수 N이 입력되면 K진수 변환하여 출력하는 프로그램을 작성하세요. 스택 자료구조를 사용하시길 바랍니다.
입력
첫 번째 줄에 10진수 N(10<=N<=1,000)과 K(2, 5, 8, 16)가 주어진다.
출력
K진수를 출력한다.
1 |
|
16진수 바꾸는 부분만 살짝 손봄. 근데 #include <stdio.h>
안써줘도 잘 돌아가네 ?!
이거는 크게 어렵지 않을 것 같아서 강의는 따로 듣지 않음!