biyam   3년 전

파이썬 단계별문제-while-마지막문제1110번입니다. 다른 답을 쓸 수도 있지만 여기서 어디가 틀려서 10 미만일때는 오류가 뜨고 10 이상일때는 input을 넣고 엔터를 쳐도 결과가 안나오고 계속 문제 입력만 되는지 궁금합니다. 

a는 첫 입력 값, d는 한 번 사이클이 돈 결과값으로 했습니다. b,c는 각각 십의자리 수, 일의자리 수입니다.

두시간 넘게 풀다가 도저히 모르겠어서 질문드립니다. 아시는 분은 답글 주시면 정말 감사하겠습니다.

문제는 

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

입니다.

yooshnn   3년 전

10 미만일 때 오류가 뜨는 이유는 8번째 줄에 오타가 있어서 그렇고, 10 이상일 때 무한루프에 빠지는 이유는 else 이하에 논리상 반복문을 탈출할 방법이 없기 때문입니다.

biyam   3년 전

감사합니다!! 앞에 오타는 고쳐서 오류는 이제 뜨지 않는데, 10 미만은 모두 답이 1이 나오는데 왜 이러는지 모르겠습니다.. 또 else 이하에 break를 넣었는데 여기서 뭐가 잘못된 건가요?

yooshnn   3년 전

10 미만의 수 n을 입력하면, 리스트에 [0, n] 이 들어가고 d = 0 + n이라 항상 n과 같아서 반복문을 반드시 탈출합니다. 

그 이상의 경우, 10 이상의수 n을 bc라고 하면, b+c=n 이 성립하는 경우는 없습니다.

가장 큰 문제는 사이클을 구현하는 내용이 전혀 없습니다. (lists의 내용을 출력해보면 처음 입력한 값만 계속 나옵니다.) 구현을 잘못 하셨거나 문제를 잘못 이해하셨지 싶어요.

biyam   3년 전

그렇군요, 답변이 많은 도움이 됐습니다!!다시 해보겠습니다

감사해요!!!

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