6개의 문자중 3개를 선택하는 조합으로 3줄을 만들고
나머지 3개의 문자가 세로로 존재하는지 확인해주는 방식으로 문제를 해결하였습니다.
Arrays.sort()함수를 통해서 정렬을 해주어서 답이 여러개일 경우 가장 빠른 단어로 나열해주었습니다.
import java.util.*;
public class Main {
public static void main(String argc[]){
Scanner sc = new Scanner(System.in);
String[] arr = new String[6];
boolean[] visit = new boolean[6];
boolean[] visit2 = new boolean[3];
int chk;
String[] s = new String[3];
String[] s2 = new String[3];
for(int i=0; i<6; ++i){
arr[i] = sc.next();
}
Arrays.sort(arr);
for(int i=0; i<6; ++i){
visit[i] = true;
s[0] = arr[i];
for(int j=0; j<6; ++j){
if(visit[j]){
continue;
}
s[1] = arr[j];
visit[j] = true;
for(int k=0; k<6; ++k){
if(visit[k]){
continue;
}
visit[k] = true;
s[2] = arr[k];
s2[0] = "";
s2[1] = "";
s2[2] = "";
s2[0] += s[0].charAt(0);
s2[0] += s[1].charAt(0);
s2[0] += s[2].charAt(0);
s2[1] += s[0].charAt(1);
s2[1] += s[1].charAt(1);
s2[1] += s[2].charAt(1);
s2[2] += s[0].charAt(2);
s2[2] += s[1].charAt(2);
s2[2] += s[2].charAt(2);
Arrays.sort(s2);
chk = 0;
visit2[0] = false;
visit2[1] = false;
visit2[2] = false;
for(int l=0; l<6; ++l){
if(visit[l]){
continue;
}
for(int m=0; m<3; ++m){
if(visit2[m]) {
continue;
}
if(arr[l].equals(s2[m])){
visit2[m] = true;
++chk;
break;
}
}
}
if(chk == 3){
System.out.printf("%s%n%s%n%s%n", s[0], s[1], s[2]);
return;
}
visit[k] = false;
}
visit[j] = false;
}
visit[i] = false;
}
System.out.printf("0");
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 15683번 감시 (0) | 2023.01.24 |
---|---|
[Java] 백준 17478번 재귀함수가 뭔가요? (0) | 2023.01.24 |
[Java] 백준 13458번 시험 감독 (0) | 2023.01.24 |
[Java] 백준 6603번 로또 (0) | 2023.01.24 |
[Java] 백준 15650번 N과 M (2) (0) | 2023.01.23 |