풀이
- 해당 문제는 순열을 활용하여서
- 단순하게 해결하고자 했으며
- 각 영역에 따른 조건 분기를 거친 후 result 값을 변경하여 해결하면 되는데
- 자바에선 파이썬처럼 순열을 만들어주는 라이브러리가 없다고 한다... ㅋ
- 그래서 재귀로 하나씩 직접 해결하도록 만들어 해결할 수 있었다.
import java.io.*;
import java.util.*;
public class 타임머신 {
static Integer result = 0;
public static void main(String[] args) throws IOException{
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(),":");
List<String> li = new ArrayList<>();
List<Integer> visit = new ArrayList<>(Collections.nCopies(3,-1));
Integer cnt = 0;
for (int i = 0; i < 3; i++) li.add(st.nextToken());
permutation(li, visit, cnt);
System.out.println(result);
}
public static void permutation(List<String> li, List<Integer> visit, Integer cnt) {
if (cnt == 3) {
Integer h = Integer.parseInt(li.get(visit.get(0)));
Integer m = Integer.parseInt(li.get(visit.get(1)));
Integer s = Integer.parseInt(li.get(visit.get(2)));
if ((0<h && h<=12) && (0<=m && m<=59) && (0<=s && s<=59)) {
result++;
}
} else {
for (int i = 0; i < 3; i++) {
if (visit.get(i) == -1) {
visit.set(i,cnt);
cnt++;
permutation(li, visit, cnt);
visit.set(i,-1);
cnt--;
}
}
}
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 1453번] 피시방 알바 (0) | 2024.01.10 |
---|---|
[백준, 파이썬, 1453번] 피시방 알바 (0) | 2024.01.10 |
[백준, 파이썬, 1440번] 타임 머신 (0) | 2024.01.09 |
[백준, 자바, 1251번] 단어 나누기 (0) | 2024.01.08 |
[백준, 파이썬, 1251번] 단어 나누기 (0) | 2024.01.08 |