More actions
인기도:A(A,B,C), 성공률:낮음(낮음,보통,높음), 레벨:1(1~4)
About ReverseAndAdd
일단 어떤 수를 받아서 그 수를 뒤집은 다음 뒤집어진 수를 원래의 수에 더하는 과정을 뒤집어서 더하기라고 부르자. 그 합이 회문(palindrome, 앞뒤 어느 쪽에서 읽어도 같은 말이 되는 어구. 예:eye, madam, 소주만병만주소)이 아니면 회문이 될 때까지 이 과정을 반복한다.
예를 들어 처음에 195에서 시작해서 다음과 같이 네 번 뒤집어서 더하기를 반복하면 9339라는 회문이 만들어진다.
195 786 1473 5214 +591 +687 +3741 +4125 ---- ----- ----- ----- 786 1473 5214 9339
대부분의 정수는 이 방법을 몇 단계만 반복하면 회문이 된다. 하지만 예외도 있다. 회문을 찾을 수 없는 것으로 밝혀진 첫번째 수는 196이다. 하지만 회문이 없다는 것이 증명된 적은 없다.
어떤 수가 주어졌을 때 회문이 있으면 출력하고, 그 회문을 찾기까지 뒤집어서 더하기를 반복한 횟수를 출력하는 프로그램을 만들어야 한다.
테스트 데이터로 쓴이는 수는 모두 뒤집어서 더하기를 1,000번 미만 반복해서 회문을 찾을 수 있는 수고, 그렇게 만들어진 회문을 4,294,967,295보다 크지 않다고 가정해도 된다.
Input
첫번째 줄에는 테스트 케이스를 나타내는 정수 N(0<N<=100)이 들어있고, 그 아래로 N개의 줄에 걸쳐서 회문을 구해야 하는 정수가 한 줄에 하나씩 들어있다.
output
N개의 각 정수에 대해 회문을 발견하는 데 필요한 최소한의 반복 횟수를 출력하고, 스페이스를 한 칸 출력한 다음, 그 회문을 출력한다.
Sample Input
3 195 265 750
Sample Output
4 9339 5 45254 3 6666
풀이
| 작성자 | 사용언어 | 개발시간 | 코드 |
| 남상협 | Python | 60분 | ReverseAndAdd/남상협 |
| 신재동 | Python | 30분 | ReverseAndAdd/신재동 |
| 황재선 | Python | 50분 | ReverseAndAdd/황재선 |
| 김회영 | C | ? | ReverseAndAdd/김회영 |
| 문보창 | C++/Python | 90분/20분 | ReverseAndAdd/문보창 |
| 곽세환 | C++ | ? | ReverseAndAdd/곽세환 |
| 이승한 | C++ | 1시간 40분 | ReverseAndAdd/이승한 |
| 김민경 | Python | . | ReverseAndAdd/민경 |
| 김태훈 | Python | . | ReverseAndAdd/태훈 |
| 김정현 | Python | . | ReverseAndAdd/김정현 |
| 정수민 | Python | . | ReverseAndAdd/정수민 |
| 남도연 | Python | . | ReverseAndAdd/남도연 |
| 최경현 | Python | . | ReverseAndAdd/최경현 |
| 김범준 | Python | . | ReverseAndAdd/김범준 |
| 임인택 | HaskellLanguage | 5분 | ReverseAndAdd/임인택 |
| JuNe | J | 10분 | .)&.(10&#.^:_1)^:(-.@((-: |.)@(10&#.^:_1)))^:a:) |
| 허아영 | C++ | 2시간 | ReverseAndAdd/허아영 |
| [1002] | Python | 5분 | ReverseAndAdd/1002 |
쓰레드
- 처음 주어진 수가 회문이면 ReverseAndAdd연산을 하는건가요 안하는건가요? --[iruril]
- 안하지 않을까요? --김회영
- 안 하죠. 입력이
~cpp 191
이면 출력은 {{{~cpp 0 191}}} -- 재선
- 개인적인 사정도 있었고, 스러피에서 슬럼프에 빠졌었습니다. 다시 열심히 할께요~ - 이승한
- 정수 N(0<N<=100) 제한을 프로그램 상에서 걸어놓으면 로봇이 틀린 답으로 판단하는군요. 왜 그럴까요? -- 보창