728x90
728x90
문제설명
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
접근방법
배열하나 찍고..
N이 1 이면 출력 없게 끔 얼리리턴 하고
for문 돌리고
if로 나머지 0일때 i를 빈배열에 집어 넣고
N에다가 i로 나눈 값 재할당해주고
i에서 1빼주고
다시 반복문 돌리면 될드읏?
아 리턴은 배열에 join으로 줄바꿔서...
function solution(number) {
let answer = [];
if (number === 1) return;
for (let i = 2; i <= number; i++) {
if (number % i === 0) {
answer.push(i);
number /= i;
i -= 1;
}
}
return answer.join('\n');
맞긴 맞았다.
근데 뭔가
여기서 원한 답은 아닌듯..?
이 문제에선 숫자하나씩 출력하길 원한거 같은데
나는 긴 문자열을 하나씩 한줄씩 띄어서 출력한거니까.
여기선 배열이 아니라
바로 console.log로 출력 해주는게 맞는듯 하다.
function solution(number) {
if (number === 1) return;
for (let i = 2; i <= number; i++) {
if (number % i === 0) {
console.log(i);
number /= i;
i -= 1;
}
}
}
다른 사람이 푼걸 보니까 for 문 조건을
i*i<= number 로 돌렸던데
이게 뭐 소인수분해 할 때
소인수분해 할 숫자에 루트를 씌워서
어쩌고.. 저쩌곤데..
문과라 모르겠습니다..
문송합니다..
이해가 안되면 외울게요..!
728x90
728x90
댓글