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

xogh7532님의 프로필 이미지
xogh7532

작성한 질문수

코딩테스트 실전 모의고사(with C++) : 대기업 대비

1. 숨겨진 합

숨겨진 합 질문드립니다.

작성

·

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 루프가 종료된 후에 sumres를 한 번 더 더해주는 로직을 추가해야 합니다. 아래는 수정된 코드의 일부입니다.

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에 정상적으로 더해져 최종 합산 결과를 올바르게 출력할 수 있습니다.

이 변경을 적용하면 문제를 해결할 수 있습니다. 질문 주셔서 감사합니다. 드릴 수 있는 도움이 되었기를 바라며, 코딩 공부에 더 도움이 필요하시면 언제든지 질문해 주세요!

xogh7532님의 프로필 이미지
xogh7532

작성한 질문수

질문하기