알고리즘

[백준, 자바, 1440번] 타임 머신

hminor 2024. 1. 9. 11:50

풀이

  • 해당 문제는 순열을 활용하여서
  • 단순하게 해결하고자 했으며
  • 각 영역에 따른 조건 분기를 거친 후 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--;
                }
            }
        }

    }
}