[알고리즘] 뒤집은 소수 - Brute force (완전 탐색)

newsilver·2021년 5월 22일
0

Algorithm

목록 보기
2/30

문제

N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하 는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출 력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.

✏️ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 100,000를 넘지 않는다.

✏️ 출력설명
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.

✏️ 입력예제 1
9
32 55 62 20 250 370 200 30 100

✏️ 출력예제 1
23 2 73 2 3


풀이

   function solution(num) {
        let str = "";			// 문자열로 변환한  배열을  저장하는 변수 
        let temp = "";			// 문자열의 위치를 바꾼 후 저장하는 변수
        let result = [];		// 소수 여부를 판별할 숫자들을 저장하는 배열
        for (let i = 0; i < arr.length; i++) {
            str = arr[i].toString();		     // arr의 i번째 요소를 문자열로 바꿈.
            temp = str.split("").reverse().join(""); // 문자열을 뒤집어 temp에 저장.
            temp = temp.replace(/(^0+)/, "");	     // 문자 앞의 0 제거. (정규식)
            result.push(Number(temp));		     // temp를 숫자로 변환 후 result에 삽입.
        }
        console.log("주어진 배열 뒤집기 : "+result);
        for (let k=0;k<result.length;k++){
            if(result[k]===1){		
                result.splice(k,1);	// result 배열에 1인 요소 제거
            }				// (1은 어차피 소수가 아니기 때문.)
        for (let j = 2; j < result[k] - 2; j++) { // 2부터 (자기자신-1)까지의 숫자 중 
            if (result[k] % j === 0) {	          // 약수가 존재하면
                result.splice(k,1);		  // result 배열에서 제거
            }

        }
    }
    console.log("========================================");
    console.log("결과 : "+result);
     
    return result;
}


✏️ 문제 출처

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

profile
이게 왜 🐷

0개의 댓글