코딩테스트 6번

JoMinJun·2021년 7월 18일
0

코딩테스트

목록 보기
19/39

뒤집은 소수

package main;



import java.util.ArrayList;
import java.util.Scanner;


public class Main {

	public  ArrayList<Integer>  sol( int n , ArrayList<String> array) {
		
		ArrayList<Integer> answer = new ArrayList<Integer>();
		ArrayList<String> an = new ArrayList<String>();
			
		
		
		// 문자열 배열을 받아서 뒤집고
		for(int i = 0 ; i < n; i ++) {
			 
			an.add(new StringBuffer(array.get(i)).reverse().toString());  
		}
		
		// 뒤집은 배열을 다시 숫자로 변경
		for(int i = 0 ; i < n; i ++) {
		
			answer.add( Integer.parseInt(an.get(i))) ;
		
		}
		


		
		
		// 숫자가 1이면 배열에서 제거하고
		for(int i = 0; i < n ; i ++) {
			if(answer.get(i) == 1) {
				answer.remove(i);
			
			// 2부터 자기 자신의 숫자 전까지의 숫자중에서 나눠지는 숫자는 제거한다
			}
			for(int j = 2 ; j < answer.get(i) ; j ++) {
				if(answer.get(i) % j  == 0) {
					answer.remove(i);
				}
			}
			System.out.println(answer);
		}
	
		return answer;
		}

	
	
	
	public static void main(String[] args) {
		
	
	
	Main main = new Main();
	
	
	
	
	Scanner scan = new Scanner(System.in);
	
	
	
	
	
	int b  = scan.nextInt();
	
	ArrayList<String> array = new ArrayList<>();
	
	for(int i = 0; i < b; i ++) {
		array.add(scan.next());
	}
	
	ArrayList<Integer> arrays =  main.sol(b,array);
	
	for(int x : arrays) {
		System.out.print(x);
	}
	}}
		

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
오류발생 ㅠㅠ 아시는분은 도와주십쇼 ㅠㅠ


선생님 코드와 내코드를 합친 코드

package main;



import java.util.ArrayList;
import java.util.Scanner;


public 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>  sol( int n , ArrayList<String> array) {
		
		ArrayList<Integer> answer = new ArrayList<Integer>();
		ArrayList<String> an = new ArrayList<String>();
			
		
		
		// 문자열 배열을 받아서 뒤집고
		for(int i = 0 ; i < n; i ++) {
			 
			an.add(new StringBuffer(array.get(i)).reverse().toString());  
		}
		
		// 뒤집은 배열을 다시 숫자로 변경
		for(int i = 0 ; i < n; i ++) {
		
			if(isPrime( Integer.parseInt(an.get(i)))) {
				answer.add( Integer.parseInt(an.get(i))) ;
			}
			
		
		}
		
		

		
		
//		// 숫자가 1이면 배열에서 제거하고
//		for(int i = 0; i < n ; i ++) {
//			if(answer.get(i) == 1) {
//				answer.remove(i);
//			
//			// 2부터 자기 자신의 숫자 전까지의 숫자중에서 나눠지는 숫자는 제거한다
//			}
//			for(int j = 2 ; j < answer.get(i) ; j ++) {
//				if(answer.get(i) % j  == 0) {
//					answer.remove(i);
//				}
//			}
//			System.out.println(answer);
//		}
//	
		return answer;
		}

	
	
	
	public static void main(String[] args) {
	
    	Main main = new Main();
	
	Scanner scan = new Scanner(System.in);
	
	
	int b  = scan.nextInt();
	
	ArrayList<String> array = new ArrayList<>();
	
	for(int i = 0; i < b; i ++) {
		array.add(scan.next());
	}
	
	ArrayList<Integer> arrays =  main.sol(b,array);
	
	for(int x : arrays) {
		System.out.print(x);
	}
	}
	
	}
		
profile
기술정리

0개의 댓글