인프런 커뮤니티 질문&답변

opix0306님의 프로필 이미지
opix0306

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

배열 2_6번 런타임에러

작성

·

299

0

스크린샷 2023-04-13 오후 3.52.27.png스크린샷 2023-04-13 오후 3.52.38.png배열을 이용하지 않고 StringBuilder 를 이용해서 코드를 짜봤는데 런타임에러가 뜹니다

따로 이유가 있나요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

제가 채점해 볼 수 있도록 풀코드를 텍스트 파일로 올려주세요. 채점사이트가 스트링빌더를 인식 못 할 수 있습니다.

opix0306님의 프로필 이미지
opix0306
질문자




import java.util.Scanner;

public class Main {
    public String solution(int n) {
        StringBuilder answer = new StringBuilder();
        Scanner sa = new Scanner(System.in);
        for (int i = 0; i < n; i++) {
            int num = sa.nextInt(); // 자연수 입력 받기

            // 자연수를 뒤집기 위해 StringBuilder 클래스를 사용
            StringBuilder sb = new StringBuilder(String.valueOf(num));
            sb.reverse(); // StringBuilder 클래스의 reverse() 메서드를 사용하여 뒤집기

            // 뒤집은 수가 소수인지 확인하기
            int reverseNum = Integer.parseInt(sb.toString());
            boolean isPrime = true; // 소수 여부를 저장할 변수

            if (reverseNum <= 1) { // 뒤집은 수가 1보다 작거나 같으면 소수가 아님
                isPrime = false;
            } else { // 뒤집은 수가 2 이상인 경우 소수 여부 확인
                for (int j = 2; j <= Math.sqrt(reverseNum); j++) {
                    if (reverseNum % j == 0) {
                        isPrime = false;
                        break;
                    }
                }
            }

            // 소수이면 출력하기
            if (isPrime) {
                if (answer.length() > 0) answer.append(" ");
                answer.append(reverseNum);

            }
        }
        return answer.toString().trim();
    }



    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        System.out.println(T.solution(n));


    }
}
김태원님의 프로필 이미지
김태원
지식공유자

네. 모든 케이스를 직접 다 해봤는데 어러 없이 답이 잘 나옵니다. 아무래도 채점사이트가 스트링빌더를 잘 못 인식하는게 아닌가 싶습니다. 코드는 전혀 문제 없습니다.

opix0306님의 프로필 이미지
opix0306
질문자

네 감사합니다

opix0306님의 프로필 이미지
opix0306

작성한 질문수

질문하기