diff --git "a/week41/\354\232\260\355\230\204\354\204\234/2529_\354\232\260\355\230\204\354\204\234.java" "b/week41/\354\232\260\355\230\204\354\204\234/2529_\354\232\260\355\230\204\354\204\234.java" new file mode 100644 index 0000000..963ef14 --- /dev/null +++ "b/week41/\354\232\260\355\230\204\354\204\234/2529_\354\232\260\355\230\204\354\204\234.java" @@ -0,0 +1,66 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +// <, > k개 나열된 A +// 부등호 앞뒤에 한자리 수 넣어서 모든 부등호 관계 만족시키도록 +// 0~9 +// 이 순서를 만족시키는 정수 중 최대, 최소 + +public class Main { + + static int k; + static char[] arr; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + k = Integer.parseInt(br.readLine()); + + StringTokenizer st = new StringTokenizer(br.readLine()); + arr = new char[k]; + for (int i = 0; i < k; i++) { + arr[i] = st.nextToken().charAt(0); + } +// System.out.println(Arrays.toString(arr)); + + + visited = new boolean[10]; + for (int i = 0; i < 10; i++) { + visited[i] = true; + backtrack(0, String.valueOf(i)); + visited[i] = false; + } + System.out.println(max); + System.out.println(min); + + } + + static boolean[] visited; + static String max = null; + static String min = null; + + public static void backtrack(int arrIdx, String number) { + if (number.length() == k+1) { + if (min == null || number.compareTo(min) < 0) min = number; + if (max == null || number.compareTo(max) > 0) max = number; + return; + } + + for (int i=0; i<10; i++) { + if (!visited[i]) { + char c = arr[arrIdx]; + int before = number.charAt(number.length()-1) - '0'; + if ((c == '>' && before > i) || (c == '<' && before < i)) { + visited[i] = true; + backtrack(arrIdx+1, number+i); + visited[i] = false; + } + } + } + + } + + + +} \ No newline at end of file diff --git "a/week42/\354\232\260\355\230\204\354\204\234/\352\270\260\353\212\245\352\260\234\353\260\234_\354\232\260\355\230\204\354\204\234.java" "b/week42/\354\232\260\355\230\204\354\204\234/\352\270\260\353\212\245\352\260\234\353\260\234_\354\232\260\355\230\204\354\204\234.java" new file mode 100644 index 0000000..d11395c --- /dev/null +++ "b/week42/\354\232\260\355\230\204\354\204\234/\352\270\260\353\212\245\352\260\234\353\260\234_\354\232\260\355\230\204\354\204\234.java" @@ -0,0 +1,80 @@ +// 기능 개선 작업, 각 기능은 진도가 100일때 반영 가능 +// 각 기능의 개발 속도는 다 다름, 뒤에 있는 기능은 앞 기능 배포될때 함께 배포 +// progresses: 먼저 배포돼야하는 순서대로 작업 진도 배열 +// speeds: 각 작업의 개발 속도 배열 +// 각 배포마다 몇개 기능이 배포되는지 리턴 + +// 필요한 일수를 큐에 넣고, 앞에부터 꺼내는데 뒤에가 앞보다 적으면 더 꺼냄 + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.List; +import java.util.Queue; + +// 큐 사용 +class Solution { + public int[] solution(int[] progresses, int[] speeds) { + Queue queue = new ArrayDeque<>(); + + for (int i=0; i result = new ArrayList<>(); + int cnt = 0; + while (!queue.isEmpty()) { + int before = queue.poll(); + cnt++; + while (!queue.isEmpty() && queue.peek() <= before) { + queue.poll(); + cnt++; + } + result.add(cnt); + cnt = 0; + } + // System.out.println(result); + + int[] answer = new int[result.size()]; + for (int i=0; i result = new ArrayList<>(); + + int day = 0; + int cnt = 0; + for (int i=0; i 0) result.add(cnt); + // 현재 날짜, 개수 갱신 + day = x; + cnt = 1; + } + } + // 마지막 배포 처리 + result.add(cnt); + + int[] answer = new int[result.size()]; + for (int i=0; i queue1 = new ArrayDeque<>(); + Queue queue2 = new ArrayDeque<>(); + + for (String c: cards1) { + queue1.add(c); + } + for (String c: cards2) { + queue2.add(c); + } + + for (String g: goal) { + if (!queue1.isEmpty() && queue1.peek().equals(g)) queue1.poll(); + else if (!queue2.isEmpty() && queue2.peek().equals(g)) queue2.poll(); + else return "No"; + } + + return "Yes"; + } +} + +// 큐 사용 x +class Solution { + public String solution(String[] cards1, String[] cards2, String[] goal) { + int i = 0; + int j = 0; + for (String g: goal) { + if (i < cards1.length && cards1[i].equals(g)) i++; + else if (j < cards2.length && cards2[j].equals(g)) j++; + else return "No"; + } + + return "Yes"; + } +} \ No newline at end of file