작성
·
214
·
수정됨
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요! 단어뒤집기에서, 제 코드 왜 runtime error가 나는지 보이지가 않아서 질문드립니다..ㅜ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
for (int i = 0; i < N; i++) {
String str = in.next();
String answer = "";
for (int j = str.length() - 1; j >= 0; j--) {
answer += str.charAt(j);
}
System.out.println(answer);
}
}
}
string이 계속 생성돼서 그런걸까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴이에요.
먼저, 단어 뒤집기 코드를 살펴보았는데, 코드는 문제가 없어보입니다.
그러나, 단어를 뒤집을 때 매번 새로운 문자열을 생성하는 것은 메모리를 많이 사용할 수 있습니다.
문자열은 변경할 수 없는(immutable) 자료형이므로, 문자열을 합칠 때마다 새로운 문자열을 생성합니다. 이로 인해 메모리 사용량이 계속해서 증가할 수 있습니다.
이러한 경우에는 StringBuilder 클래스를 사용하는 것이 좋습니다. StringBuilder를 사용하면 문자열을 변경할 수 있으므로 메모리 사용량을 줄일 수 있습니다.
아래는 StringBuilder를 사용한 코드 예시입니다.
Scanner in = new Scanner(System.in);
int N = in.nextInt();
for (int i = 0; i < N; i++) {
String str = in.next();
StringBuilder answer = new StringBuilder();
for (int j = str.length() - 1; j >= 0; j--) {
answer.append(str.charAt(j));
}
System.out.println(answer.toString());
}
이렇게 코드를 변경하면 메모리 사용량이 줄어들어서 런타임 에러가 발생하지 않을 수 있어요. 참고하세요.