[Java, Python]_12904_A와B

hanseungjune·2023년 7월 20일
0

알고리즘

목록 보기
30/33
post-thumbnail

자바

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

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

        String s = br.readLine();
        String t = br.readLine();

        List<Character> Schars = new ArrayList<>();
        List<Character> Tchars = new ArrayList<>();
        for (int i = 0; i < s.length(); i++){
            Schars.add(s.toCharArray()[i]);
        }
        for (int i = 0; i < t.length(); i++){
            Tchars.add(t.toCharArray()[i]);
        }

        while (Schars.size() != Tchars.size()) {
            if (Tchars.get(Tchars.size()-1) == 'A') {
                Tchars.remove(Tchars.size()-1);
            } else {
                Tchars.remove(Tchars.size()-1);
                Collections.reverse(Tchars);
            }
        }

        StringBuilder sbS = new StringBuilder();
        StringBuilder sbT = new StringBuilder();
        for (Character chs : Schars) {
            sbS.append(chs);
        }
        for (Character cht : Tchars) {
            sbT.append(cht);
        }
        String ans = sbS.toString();
        String res = sbT.toString();

        if (ans.equals(res)) {
            System.out.println(1);
        } else {
            System.out.println(0);
        }
    }
}

로직 설명

이 Java 코드는 문자열을 변환하는 문제를 해결합니다. 여기서는 두 가지 연산을 이용해서 문자열 S를 T로 바꾸려고 합니다.

문자열의 끝에 'A'를 추가한다.
문자열을 뒤집고 끝에 'B'를 추가한다.
주요 구성 요소는 다음과 같습니다:

Schars, Tchars: 입력받은 두 문자열 S와 T를 문자 단위로 분해하여 저장하는 리스트입니다. 문자열 S와 T는 공백 없이 대문자로만 이루어져 있습니다.

main: 사용자로부터 두 문자열 S와 T를 입력받고, 각 문자를 Schars와 Tchars 리스트에 저장합니다. 이후 문자열 S의 크기와 T의 크기가 같아질 때까지 아래 작업을 반복합니다:

T의 마지막 문자가 'A'라면, T의 마지막 문자를 제거합니다.
T의 마지막 문자가 'B'라면, T의 마지막 문자를 제거하고 T를 뒤집습니다.
그 후 StringBuilder를 이용하여 Schars와 Tchars를 다시 문자열로 변환하고 두 문자열이 같은지 비교합니다.

문자열 S를 T로 바꿀 수 있다면 '1'을 출력하고, 그렇지 않다면 '0'을 출력합니다.

이 코드를 간략하게 요약하면, 주어진 두 문자열 S와 T에 대해 S를 T로 변환할 수 있는지를 판단하는 문제를 해결하는 것입니다. 문자열의 끝에 'A'를 추가하거나, 문자열을 뒤집고 끝에 'B'를 추가하는 두 가지 연산을 이용하여 S를 T로 변환할 수 있는지를 체크하며, 이 때 문자열 T에서 연산을 역으로 수행하는 방식으로 문제를 해결합니다.

파이썬

import sys
input = sys.stdin.readline

s = list(input().strip())
t = list(input().strip())

while len(s) != len(t):
    if t[-1] == 'A':
        t.pop()
    else:
        t.pop()
        t.reverse()
        
if s == t:
    print(1)
else:
    print(0)
profile
필요하다면 공부하는 개발자, 한승준

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

많은 도움이 되었습니다, 감사합니다.

답글 달기