728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/02-06
- 문제 설명 : n개의 자연수를 입력 받아 각각의 수를 거꾸로 뒤집었을 때 소수면 출력하는 문제
내 풀이
- 숫자를 뒤집는 방법으로 정수를 문자열로 변환하여 문자열을 뒤집은 후 다시 정수로 변환
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main2_6 {
//소수 판별 메서드
public static boolean isPrime(int num) {
if (num == 1) { //1은 소수가 아니기 때문
return false;
}
for (int j = 2; j < num; j++) {
if (num%j == 0) {
return false;
}
}
return true;
}
public static List<Integer> solution(int n, int[] arr) {
List<Integer> retList = new ArrayList<>();
for (int i = 0; i < n; i++) {
//정수를 뒤집는 부분
arr[i] = Integer.parseInt(new StringBuilder(String.valueOf(arr[i])).reverse().toString());
if (isPrime(arr[i])) {
retList.add(arr[i]);
}
}
return retList;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
String[] s = br.readLine().split(" ");
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(s[i]);
}
List<Integer> list = solution2(n, arr);
for (int i : list) {
System.out.print(i + " ");
}
}
}
강의 풀이
- 정수를 뒤집는 방법으로 사칙연산을 이용
import java.util.*;
class Main {
public boolean isPrime(int num){
if(num==1) return false;
for(int i=2; i<num; i++){
if(num%i==0) return false;
}
return true;
}
public ArrayList<Integer> solution(int n, int[] arr){
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<n; i++){
int tmp=arr[i];
int res=0;
//정수를 뒤집는 부분
while(tmp>0){
int t=tmp%10;
res=res*10+t;
tmp=tmp/10;
}
if(isPrime(res)) answer.add(res);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
for(int x : T.solution(n, arr)){
System.out.print(x+" ");
}
}
}
'알고리즘 문제풀이 > 인프런' 카테고리의 다른 글
[알고리즘] 2-9 격자판 최대합(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.14 |
---|---|
[알고리즘] 2-8 등수 구하기(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.14 |
[알고리즘] 2-7 점수계산(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.14 |
[알고리즘] 2-5 소수, 에레토스테네스 체(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.13 |
[알고리즘] 2-4 피보나치 수열(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의) (0) | 2021.05.13 |
댓글