2014년 7월 14일 월요일

2659 십자카드 문제

1~9 의 숫자가 4개 적힌 십자카드를 시계 방향으로 읽었을 때, 가장 작은 수를 십자수 라고 한다. 이 때 주어진 숫자가 가장 작은 십자수로 부터 몇번째 숫자인지 판단하는 문제이다.

일단 가장 작은 십자수는 1111, 가장 큰 십자수는 9999임을 알 수 있다.
여기서 1111~9999까지의 모든 십자수를 구해도 TLE가 나지 않음을 알 수 있다.
십자수를 구하는 방법은 숫자 4개를 a b c d 라고 할 때,
abcd(a*1000+b*100+c*10+d)
bcda
cdab
dabc
의 4개의 숫자중에서 가장 작은걸 고르도록 하면 된다.
이것을 가능한 모든 숫자로 골라서 index 배열에 넣고,
주어진 숫자의 십자수를 index의 위치에서 찾아내면 된다.

소스

댓글 없음:

댓글 쓰기