<BOJ>11328번: Strfry

라모스·2021년 9월 13일
0

BOJ

목록 보기
4/22
post-thumbnail

문제


11328번: Strfry

접근

  • 첫 번째 문자열을 재배열해서 두 번째 문자열로 만들 수 있는지를 판단.
  • 다시 말해, 두 개의 문자열을 보고 어떤 알파벳으로 이루어져 있는지, 개수는 같은지 비교/판단해서 return.

내 코드

import java.io.*;
import java.util.*;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
    public static void main(String[] args) throws IOException {
        int tc = Integer.parseInt(br.readLine());
        while (tc-- > 0) {
            st = new StringTokenizer(br.readLine(), " ");
            char[] a = st.nextToken().toCharArray();
            char[] b = st.nextToken().toCharArray();
            strFry(a, b);
        }
    }

    public static void strFry(char[] a, char[] b) {
        int[] alpha = new int[26];
        boolean check = true;
        for (char c : a) alpha[c-'a']++;
        for (char c : b) alpha[c-'a']--;
        for (int i : alpha)
            if (i != 0) check = false;
        System.out.println(check ? "Possible" : "Impossible");
    }
}
  • 알파벳은 26개임. 이 개수 만큼 배열 공간을 할당해서 입력받은 문자열에 포함된 알파벳을 차례대로 읽어오자.
  • 1번째 문자열로 2번째 문자열을 만들 수 있는지는 두 문자열의 길이도 신경써야 하지만 같은 알파벳이 몇 개 있는지(+같은 길이라면, 정렬 시 결과가 똑같은지)에 신경 써서 풀이하면 된다.
  • String.toCharArray() 메소드로 입력 받은 문자열을 char[]로 만들 수 있음을 생각하자.

문자열 문제가 코딩테스트에 빈출되는 유형인데,,, 나는 이 유형 극혐;☠
쉬운 문제부터 차근차근 풀어나가면서 접근하는 방식을 좀 더 익혀보자. 빡쌘 문자열 문제는 파이썬으로 푸는게 쉽다고들 하는데, 이러한 점도 대비해야지...

profile
Step by step goes a long way.

0개의 댓글