howdyworld   1년 전

안녕하세요 답변자님.

제가 1769번 문제를 풀기 위해 작성한 코드를 제출시 런타임 에러가 계속 발생하여서 제 스스로의 힘으로 오류가 될 만한 부분들을 최대한 찾아보고, 문제가 될 만한 코드를 수정해보아도 해결이 되지 않아 코드의 어떤 부분에서 오류가 발생하였는지 알고 싶어 질문드립니다. 발생한 런타임 에러는 out_of_range 입니다.

제가 작성한 코드는 입력값이 1,000,000자리 이하의 수로 매우 큰 수이므로 일반 정수형 변수가 아닌 C++의 String 자료형에 입력값을 받아, addDigit라는 문제에서 설명하는 "문제 변환의 과정"을 수행하여 최종적으로 답을 출력해주는 함수에 인자로 전달하여 호출하는 코드입니다.

이 addDigit함수는 사용자의 입력값을 인자로 받아 정수형으로 변환하여 베이스케이스(10미만의 수)에 도달한 경우, 3의 배수인지의 여부에 따라 이에 따른 출력값을 출력합니다. 그리고 프로그램을 종료시킵니다.

베이스케이스에 도달하지 않은 경우, 각 자리 수를 합하는 변환 과정을 거치고, 변환 과정의 횟수를 저장하는 변수를 1 증가시킵니다. 그리고 변환된 값을 인자로 다시 addDigit을 호출합니다.


bupjae   1년 전

24번째 줄에서 문자열을 그냥 일반 정수형으로 변환하고 있습니다.

stoi 는 입력으로 들어오는 문자열을 int 정수형에 온전히 담을 수 없으면 런타임 에러를 발생시킵니다.

howdyworld   1년 전

감사합니다. ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.