12번 암호문 런타임에러
253
작성한 질문수 3
14e972338646
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int num = Integer.parseInt(kb.nextLine());
String str = kb.nextLine();
solution(str, num);
kb.close();
}
private static void solution(String str, int num) {
List<String> binlist = new ArrayList<>();
for (int i = 0; i < str.length(); i += (str.length() / num)) {
int end = Math.min(i + str.length() / num, str.length());
binlist.add(str.substring(i, end));
}
for (String each : binlist) {
StringBuilder tmp = new StringBuilder();
for (char mos : each.toCharArray()) {
if (mos == '#')
tmp.append(1);
if (mos == '*')
tmp.append(0);
}
binlist.set(binlist.indexOf(each), tmp.toString());
}
for(String each : binlist){
solution2(each);
}
}
private static void solution2(String bin) {
int ascii = Integer.parseInt(bin,2);
System.out.print((char)ascii);
}
}
다른 질문 글에도 런타임 에러 질문이 있는거 같은데 명확한 답변을 못 찾아 글을 올려봅니다.
12번 암호문제구요.
2,3,4,5 테스트 케이스 다 통과했다는데 1번 테스트케이스에서 런타임에러가 나옵니다.
다른 글에서 보니 1번은 문제에서 제시한 테스트케이스라는데 로컬에서는 정상 작동을 확인했습니다.
어떤 부분이 문제일까요? 런타임에러가 어떤 상황인지도 알고 싶습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 코드를 살펴보니 런타임 에러의 원인으로 추정되는 부분이 있습니다.
첫 번째, solution 메소드 내에서 str.length() / num을 활용하여 암호문을 나누고 있는데, 이 부분에서 str.length()가 num으로 정확히 나누어 떨어지지 않을 경우에 배열 범위를 벗어날 수 있습니다. 예를 들어, str.length()가 10이고 num이 3이라면 10 / 3 = 3으로 계산되고 마지막에는 암호문이 1글자가 부족하게 됩니다.
두 번째로, binlist.set(binlist.indexOf(each), tmp.toString()); 이 부분에서 수정하고자 하는 문자열들은 이미 for-each 루프에서 사용 중이기 때문에, 해당 문자열을 수정하는 과정에서 ConcurrentModificationException이 발생할 수도 있습니다.
solution 메소드에서 binlist에 대한 수정을 별도의 리스트에 담았다가 나중에 반영하거나, 다른 수정 방법을 고려해야 할 것 같습니다.
런타임 에러는 프로그램이 실행 중에 발생하는 오류를 의미합니다. 예를 들어 배열 범위를 넘어서 접근하려고 할 때나, 널 참조를 참조하려고 하는 등의 상황에서 발생할 수 있습니다.
로컬 환경에서 정상 작동하는 경우에도, 테스트 케이스에 따라 문제 상황이 발생할 수 있으므로 주의가 필요합니다.
정확한 원인을 파악하기 위해서는 문제의 테스트 케이스를 확인하는 것이 좋습니다. 에러 메시지를 확인하여 어떤 종류의 런타임 에러가 발생했는지 파악하고, 해당 상황을 재현해보세요.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
27
1
갑자기 채점 사이트가 바뀌었어요
0
32
1
문제 리스트 페이지
0
27
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
81
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
64
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
72
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
85
2
6-7 강의에서
0
48
1
6-6. 장난꾸러기 질문 있습니다.
0
45
1
강의 수강후 코딩테스트
0
109
1
answer 변수 사용 여부
0
44
1
2중 for문
1
85
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
43
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
62
1
StringBuilder vs BufferdWriter
0
48
1
원더랜드(프림)
0
50
1
이런 코드는 어떤가요?
0
61
1
bfs 풀이
0
57
1
병합정렬
0
56
1





