뒤집은 소수
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 isPrime(res) {
if(num===1) return false;
for(let i=2; i<=parseInt(Math.sqrt(num)); i++){
if(num%i===0) return false;
}
return true;
}
function solution(arr){
let answer=[];
for(let x of arr){
const res = Number(x.toString().split('').reverse().join(''))
if (isPrime(res)) answer.push(x)
}
return answer;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
멘토링
현수네 반 선생님은 반 학생들의 수학점수를 향상시키기 위해 멘토링 시스템을 만들려고 합니 다. 멘토링은 멘토(도와주는 학생)와 멘티(도움을 받는 학생)가 한 짝이 되어 멘토가 멘티의 수학공부를 도와주는 것입니다. 선생님은 M번의 수학테스트 등수를 가지고 멘토와 멘티를 정합니다. 만약 A학생이 멘토이고, B학생이 멘티가 되는 짝이 되었다면, A학생은 M번의 수학테스트에서 모두 B학생보다 등수가 앞서야 합니다. M번의 수학성적이 주어지면 멘토와 멘티가 되는 짝을 만들 수 있는 경우가 총 몇 가지 인지 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 번째 줄에 반 학생 수 N(1<=N<=20)과 M(1<=M<=10)이 주어진다. 두 번째 줄부터 M개의 줄에 걸쳐 수학테스트 결과가 학생번호로 주어진다. 학생번호가 제일 앞에서부터 1등, 2등, ...N등 순으로 표현된다. 만약 한 줄에 N=4이고, 테스트 결과가 3 4 1 2로 입력되었다면 3번 학생이 1등, 4번 학생이 2등, 1번 학생이 3등, 2번 학생이 4등을 의미합니다.
▣ 출력설명
첫 번째 줄에 짝을 만들 수 있는 총 경우를 출력합니다.
▣ 입력예제
1 4 3 3 4 1 2 4 3 2 1 3 1 4 2 ▣ 출력예제 1 3 (3, 1), (3, 2), (4, 2)와 같이 3가지 경우의 (멘토, 멘티) 짝을 만들 수 있다.
function solution(test){
let answer=0; let arr = []
for (let i = 0; i < test.length; i++) {
arr.push([])
for (let j = 0; j < test[i].length; j++) {
for (let z = j + 1; z < test[i].length; z++) {
arr[i].push([test[i][j], test[i][z]])
}
}
}
for (let x of arr[0]) {
let cnt = 0
for (let i = 1; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
if (x[0] === arr[i][j][0] && x[1] === arr[i][j][1]) cnt++
}
}
if (cnt === 2) answer++
}
return answer;
}
let arr=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
console.log(solution(arr));
function solution(test){
let answer=0;
let mentor = 0;
let mentee = 0;
for (let i = 1; i <= 4; i++) {
mentor = i
for (let j = 1; j <= 4; j++) {
mentee = j
let cnt = 0;
for (let x = 0; x < test.length; x++) {
let mentorRank = 0, menteeRank = 0
for (let z = 0; z < test[x].length; z++) {
if (test[x][z] === mentor) mentorRank = z
if (test[x][z] === mentee) menteeRank = z
}
if (mentorRank < menteeRank) cnt++
}
if (cnt === 3) answer++
}
}
return answer;
}
let arr=[[3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2]];
console.log(solution(arr));
'알고리즘 풀이' 카테고리의 다른 글
[20211027]알고리즘 풀이 (0) | 2021.10.27 |
---|---|
[20211024]알고리즘 풀이 (0) | 2021.10.24 |
[20211012]알고리즘 풀이 (0) | 2021.10.12 |
[20211010]알고리즘 풀이 (0) | 2021.10.10 |
[20211009]알고리즘 풀이 (0) | 2021.10.09 |