이 풀이방법 혹시 틀렸을까요?
201
작성한 질문수 1
public class Number4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
List<String> array = new ArrayList<>();
for (int i = 0; i <= count; i++) {
array.add(scanner.nextLine());
}
for (String str : array) {
Deque<Character> stack = new ArrayDeque<>();
for ( char c : str.toCharArray()){
stack.push(c);
}
while (!stack.isEmpty()){
System.out.print(stack.pop());
}
System.out.println();
}
}
}
위 풀이방법처럼 풀었는데 이게 컴파일 에러가 나는데 혹시 이 풀이방법이 문제점을 가지고 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
담당님의 코드를 확인해보니, 컴파일 에러가 나는 이유는 Scanner 사용 시, 첫 번째 nextInt() 호출 후 바로 nextLine()을 호출하는 경우 발생할 수 있는 문제로 보입니다. nextInt() 메소드는 정수만 읽고, 줄바꿈 문자는 그대로 입력 스트림에 남겨둡니다. 그래서 다음 nextLine() 호출 때, 실제로 사용자가 의도한 데이터를 입력하기 전에 남아있던 줄바꿈 문자를 만나고 입력이 종료되는 것처럼 동작하기 때문입니다.
해당 문제를 해결하기 위해서는 nextInt() 호출 직후 nextLine()을 한 번 더 호출하여 입력 스트림에서 남아있는 줄바꿈 문자를 명시적으로 소비하는 것이 좋습니다. 이렇게 수정하면 정상적으로 문자열을 입력받을 수 있습니다.
다음은 수정된 코드의 예시입니다:
public class Number4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
scanner.nextLine(); // 이 부분을 추가하여 남아있는 줄바꿈 문자를 소비합니다.
List<String> array = new ArrayList<>();
for (int i = 0; i < count; i++) { // i <= count에서 i < count로 변경해야 하는 것을 추천드립니다.
array.add(scanner.nextLine());
}
for (String str : array) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : str.toCharArray()) {
stack.push(c);
}
while (!stack.isEmpty()) {
System.out.print(stack.pop());
}
System.out.println();
}
}
}
또한, 배열을 추가하는 반복문에서 사용한 조건 i <= count 대신 i < count를 사용해야 지정한 개수만큼 정확히 입력을 받을 수 있습니다. 첫 번째 nextInt()로 입력받은 count는 배열에 저장할 문자열의 수를 의미하므로, 반복문의 조건을 i < count로 설정하여 정확히 count 횟수만큼 입력을 받아야 합니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
33
1
갑자기 채점 사이트가 바뀌었어요
0
34
1
문제 리스트 페이지
0
29
1
채점 사이트 관련 질문드립니다
0
24
1
봉우리 문제 질문입니다
0
84
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
65
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
72
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
85
2
6-7 강의에서
0
48
1
6-6. 장난꾸러기 질문 있습니다.
0
46
1
강의 수강후 코딩테스트
0
111
1
answer 변수 사용 여부
0
46
1
2중 for문
1
85
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
44
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
63
1
StringBuilder vs BufferdWriter
0
48
1
원더랜드(프림)
0
50
1
이런 코드는 어떤가요?
0
61
1
bfs 풀이
0
57
1
병합정렬
0
57
1





