마르코는 상용 고객 클럽 회원으로 마일리지를 많이 모아, 마침내 호주 여행을 가기로 했다. 그런데 흔히 그렇듯 마일리지로 여행 경비를 전부 낼 수는 없었고, 항공사 직원이 전화를 걸어 신용카드 번호(숫자 16개로 이루어진 문자열)를 이메일로 보내 달라고 부탁했다.
마르코는 이것이 말도 안 되는 요구라고 생각했지만 직원이 계속 고집을 부리자, 절충안으로 다음 알고리즘으로 카드 번호를 암호화해서 보내겠다고 제안했다.
- 번호에서 가장 작은 숫자를 찾는다. 같은 값이 여러 개면 그중 가장 왼쪽에 있는 것을 고른다. 이 숫자를 A라고 하자.
- 번호에서 가장 큰 숫자를 찾는다. 같은 값이 여러 개면 그중 가장 오른쪽에 있는 것을 고른다. 이 숫자를 B라고 하자.
- A가 9가 아니면 A를 1 늘린다. 이미 9이면 그대로 둔다.
- B가 0이 아니면 B를 1 줄인다. 이미 0이면 그대로 둔다.
- 마지막으로 A와 B의 자리를 서로 바꾼다.
예를 들어 카드 번호가 7691002779603269이면, 마르코가 이메일로 보내는 번호는 7691802779603261이다.
항공사 직원이 마르코의 신용카드 번호를 알아낼 수 있도록 도와주는 프로그램을 작성하시오.