nwk1541   8년 전

그냥 무작정 풀었습니다.

뭐가 문제일까요??

ddaafftt   8년 전

더하기 사이클은 입력받은 값의 십의 자릿수와 일의 자릿수를 더하고, 그 더한 값을 일의 자릿수와 붙이는 과정을 반복해서 입력받은 원래의 값으로 돌아오는데 얼마나 걸렸나 세는 문제입니다.

문제에서는 입력을 받을시 '2 6'이 아닌 '26'과 같은 형태로 입력받기 때문에 십의 자릿수와 일의 자릿수를 분리하는것이 관건입니다.

nwk1541님께서는 int arrA[2] = { 0 }; scanf("%d", &arrA[0]), scanf("%d", &arrA[1]); 와 같이 코드를 작성하셨습니다.
그걸로 봐서는 제 생각엔 nwk1541님께서 'xy를 입력 함수 두개로 입력 받으면 컴퓨터는 x 하나, y 하나로 분리해서 받을것이다' 라고 의도를 하신것 같습니다만, 이건 어찌보면 지극히 저희 인간 중심적인 생각입니다 (--);;

만약 nwk1541님께서 의도하신대로 작성을 하고 1234를 입력받으면 컴퓨터는 어떻게 처리를 해야될까요?

arrA[0] = 1, arrA[1] = 234 와 같이 해주어야 할까요?
아니면 12, 34로 처리를 해야 할까요?
그것도 아니라면 123, 4로 해야 할까요?

저희가 영화를 볼때 엔딩 크레딧이 뜨면 영화가 끝난걸 파악 하듯이, 컴퓨터에 수를 입력할땐 숫자가 아닌 특수문자로 이번 입력의 끝을 판단합니다. 보통은 스페이스바나 엔터키로 판단을 하게 되지요.

그 점으로 미루어보면 nwk1541님의 기존 소스는 26을 입력하면 2가 arrA[0], 6이 arrA[1]에 들어가는것이 아니라 26이 arrA[0]에 들어가고 컴퓨터는 arrA[1]에 수를 받을 준비를 하면서 언제오나 하고 기다리게 되는걸 알수 있겠지요.

어쨌거나 이 부분을 명확하게 해주려면

  1. 애초에 정수가 아닌 문자로 각각 하나씩 입력을 받음 ('2', '6')
  2. 수를 통째로 입력을 받고 (26), 나머지 연산을 사용하여 각 자릿수를 분리

이렇게 두 방법중 하나를 선택하시면 될 것입니다.

nwk1541   8년 전

정성들여 써주신 답변 감사합니다.

하나는 배열로 무작정 해볼려고 하였고, 하나는 변수에 받아서 연산으로 분리시켜서 하는 2가지 방법으로 시도를 해봤습니다.

아직 테스트는 안해봤지만 동작은 잘 하는데...이것저것 해보니 아마 0을 입력으로 주었을때 횟수가 0번 나오는게 문제가 아니였나 싶습니다.

저는 당연히 입력이 0일땐 0번이라고 생각하고 있었는데 이것도 1번의 횟수로 생각하는것 같아요..생각도 못하고 있었는데;

무튼 답변 감사합니다!

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