알고리즘 도전기 - 12
2659 십자카드 문제
문제
위와 같은 십자모양의 한 장의 카드에서, 네 모서리에 1 이상 9 이하의 숫자가 하나씩 씌여 있다. 이 네 개의 숫자 중에는 같은 숫자도 있을 수 있다.
모든 가능한 십자 카드가 주어질 때, 각각의 카드는 다음과 같은 '시계수'라는 번호를 가진다. 시계수는 카드의 숫자들을 시계 방향으로 읽어서 만들어지는 네 자리 수들 중에서 가장 작은 수이다. 위 그림의 카드는 시계방향으로 3227, 2273, 2732, 7322로 읽을 수 있으므로, 이 카드의 시계수는 가장 작은 수인 2273이다.
입력으로 주어진 카드의 시계수를 계산하여, 그 시계수가 모든 시계수들 중에서 몇 번째로 작은 시계수인지를 알아내는 프로그램을 작성하시오.
예를 들어서, 다음과 같은 십자 카드의 시계수는 1122이며, 이 시계수보다 작은 시계수들은 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119 뿐이므로 1122는 10번째로 작은 시계수다. (여기서 십자카드는 0 이 나타날 수 없으므로 1120은 시계수가 될 수 없다. 또한 1121 이 적혀있는 카드의 시계수는 1112이므로, 1121은 시계수가 될 수 없다.
입력
입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다.
출력
입력된 카드의 시계수가 모든 시계수들 중에서 몇 번째로 작은 시계수인지를 출력한다.
예제입력
2 1 1 2
예제출력
10
코드
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String first = scanner.next();
String second = scanner.next();
String third = scanner.next();
String fourth = scanner.next();
int minNumber = rotation(first,second,third,fourth);
int count=0;
for(int i=1111;i<10000;i++){
String stringNumber = Integer.toString(i);
if(stringNumber.contains("0")==false){
String[] rotationList = stringNumber.split("");
int rotationNumber = rotation(rotationList[0],rotationList[1],rotationList[2],rotationList[3]);
if(rotationNumber==i){
count++;
if(stringNumber.equals(Integer.toString(minNumber))){
break;
}
}
}
}
System.out.println(count);
}
public static int rotation(String first, String second, String third, String fourth){
int[] numList = new int[4];
int number=10000;
numList[0] = Integer.parseInt(first+second+third+fourth);
numList[1] = Integer.parseInt(second+third+fourth+first);
numList[2] = Integer.parseInt(third+fourth+first+second);
numList[3] = Integer.parseInt(fourth+first+second+third);
for(int i=0;i<4;i++){
if(number>numList[i]){
number=numList[i];
}
}
return number;
}
}
Author And Source
이 문제에 관하여(알고리즘 도전기 - 12), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimchiwarrior/알고리즘-도전기-12저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)