-
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private static int[][] alpha; private static final String P = "Possible"; private static final String I = "Impossible"; private static final String NEW_LINE = "\n"; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); while(N-- > 0) { alpha = new int[2][26]; StringTokenizer st = new StringTokenizer(br.readLine()); for(char c: st.nextToken().toCharArray()) { alpha[0][c - 'a']++; } for(char c: st.nextToken().toCharArray()) { alpha[1][c - 'a']++; } sb.append(isSame(alpha[0], alpha[1]) ? P : I).append(NEW_LINE); } System.out.println(sb); } private static boolean isSame(int[] arr1, int[] arr2) { for(int i = 0; i < arr1.length; i++) { if(arr1[i] != arr2[i]) return false; } return true; } }
- 못 풀겠어서 다른 풀이 참조
- 1. 문제이해 자체를 잘못함. A가 B를 포함해야 된다고 생각한거 자체가 잘못됨
- 2. 결국에 알파벳에서 같은지 카운팅 하는것
- 3. 다른 자바 풀이를 보니까 Scanner말고 BufferedReader를 사용함
-> 알고리즘 효율성 검사에 유리함, 예외처리가 필수임, StringTokenizer 사용
- 4. A, B에서 알파벳 카운팅함, -'a'를 해서 0~25까지 숫자로 카운팅
- 5. A,B 배열 비교후 != false. 답일려면 A,B 배열에 있는 알파벳 카운팅이 같아야함
https://www.acmicpc.net/problem/11328