[BOJ]13019 - A를 B로(G5)

suhyun·2023년 1월 9일
0

백준/프로그래머스

목록 보기
55/81

문제 링크

13019-A를 B로


입력

첫째 줄에 A, 둘째 줄에 B가 주어진다.
두 문자열의 길이는 같으며, 길이는 50을 넘지 않는다. 또, 알파벳 대문자로만 이루어져 있다.

출력

첫째 줄에 A를 B로 바꾸는 연산 횟수의 최솟값을 출력한다. A를 B로 바꿀 수 없을 때는 -1을 출력한다.


문제 풀이

배열에 A와 B에 있는 문자를 모두 표시해서
겹치지 않는게 존재하는 경우는 바꿀 수 없는 경우니깐 -1 출력

나머지 경우에는 A는 앞에서부터, B는 뒤에서부터 비교해가면서
옮겨야 하는 문자의 갯수 찾아주기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String A = br.readLine();
        String B = br.readLine();
        int[] arr = new int[26];

        for (char c : A.toCharArray()) {
            arr[c-'A']++;
        }
        for (char c : B.toCharArray()) {
            arr[c-'A']--;
        }
        for (int i : arr) {
            if (i != 0) {
                System.out.println(-1);
                return;
            }
        }

        int cnt = 0;
        for (int i = A.length() - 1; i >= 0; i--) {
            if (A.charAt(i) == B.charAt(A.length() - 1 - cnt)) cnt++;
        }
        System.out.println(A.length() - cnt);

    }
}
profile
꾸준히 하려고 노력하는 편 💻

0개의 댓글