작성
·
83
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
답이 틀렸다고 나오는데, 어디가 잘 못 된건지 궁금합니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] argvs) {
Scanner sc = new Scanner(System.in);
String s=sc.next();
int res=0;
int sum=0;
for(char x : s.toCharArray()) {
if(Character.isDigit(x)) {
res = res*10 + (x-48);
}
else {
sum+=res;
res=0;
}
}
System.out.print(sum);
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
xogh7532님, 코드를 살펴보니 숨겨진 합을 계산하는 과정에서 한 가지 작은 오류를 발견했습니다.
주어진 코드는 문자열 s에서 숫자를 찾아 누적하여 합을 계산하는 로직을 구현하고 있습니다. 그러나 코드의 로직에서 마지막으로 발견된 숫자가 합산되지 않는 문제가 있습니다. 이는 문자열의 마지막이 숫자로 끝날 경우, 그 숫자를 더하지 않고 루프가 종료되기 때문입니다.
이를 수정하기 위해서는 for 루프가 종료된 후에 sum
에 res
를 한 번 더 더해주는 로직을 추가해야 합니다. 아래는 수정된 코드의 일부입니다.
for(char x : s.toCharArray()) {
if(Character.isDigit(x)) {
res = res*10 + (x-48);
}
else {
sum+=res;
res=0;
}
}
sum += res; // 이 부분을 추가해주세요.
System.out.print(sum);
코드의 끝에 sum += res;
를 추가하면 마지막으로 누적된 res
값도 sum
에 정상적으로 더해져 최종 합산 결과를 올바르게 출력할 수 있습니다.
이 변경을 적용하면 문제를 해결할 수 있습니다. 질문 주셔서 감사합니다. 드릴 수 있는 도움이 되었기를 바라며, 코딩 공부에 더 도움이 필요하시면 언제든지 질문해 주세요!