๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 12919_A์™€ B 2

๋ฟŒ์•ผ._. 2022. 12. 22. 09:37

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/12919)

<A์™€ B 2>

 

๋ฌธ์ œ ํ’€์ด

 

๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—์„œ S์—์„œ T๋กœ ๋ณ€ํ™˜ํ• ๊นŒ T์—์„œ S๋กœ ๋ณ€ํ™˜ํ• ๊นŒ๋ฅผ ์ฒ˜์Œ์— ๊ณ ๋ฏผํ–ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค S์—์„œ T๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ ๊นŒ ์‹ถ์–ด์„œ T์—์„œ S๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•˜์˜€๋‹ค. ๊ทธ ํ›„ S์—์„œ T๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋„ ๊ตฌํ˜„ํ•ด ๋ณด์•˜๋‹ค. ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„์ดˆ๊ณผ์˜€๋‹ค!

 

T์—์„œ S๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€

1) ๋ฌธ์ž์—ด ๋’ค์— A ์ถ”๊ฐ€(์›๋ž˜ ์กฐ๊ฑด) -> ๋ฌธ์ž์—ด ๋’ค์— A๊ฐ€ ์žˆ์œผ๋ฉด A์ œ๊ฑฐ ํ›„ ๋„ฃ๊ธฐ

2) ๋ฌธ์ž์—ด์˜ ๋’ค์— B๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ(์›๋ž˜ ์กฐ๊ฑด) -> ๋ฌธ์ž์—ด ๋งจ ์•ž์— B๊ฐ€ ์žˆ์œผ๋ฉด ๋งจ ์•ž ๋ฌธ์ž์—ด ๋นผ๊ณ  ๋’ค์ง‘๊ธฐ

๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

 - my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class _12919_ { // A์™€ B 2

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String S = bf.readLine();
		String T = bf.readLine();

		Queue<String> queue = new LinkedList<>();
		queue.add(T);

		boolean flag = false;
		while (!queue.isEmpty()) {
			String temp = queue.poll();

			if (temp.length() - 1 < S.length())
				continue;

			// ๋ฌธ์ž์—ด ๋’ค์— A ์ œ๊ฑฐ
			if (temp.charAt(temp.length() - 1) == 'A') {
				String a = temp.substring(0, temp.length() - 1);
				if (a.equals(S)) {
					flag = true;
					break;
				}
				queue.add(a);
			}

			// ๋งจ ์•ž ๋ฌธ์ž์—ด B ์ œ๊ฑฐ ํ›„ ๋’ค์ง‘๊ธฐ
			if (temp.charAt(0) == 'B') {
				String a = "";
				for (int i = temp.length() - 1; i > 0; i--) {
					a += temp.charAt(i);
				}
				if (a.equals(S)) {
					flag = true;
					break;
				}
				queue.add(a);
			}
		}
		if (flag)
			System.out.println(1);
		else
			System.out.println(0);
	}
}

 

S๋ฅผ T๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋ƒ๋ฅผ ๋ฌผ์–ด๋ณด๋Š” ๋ฌธ์ œ์ด์ง€๋งŒ ๋ฌธ์ œ ํ•ด๊ฒฐ์€ T๋ฅผ S๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋ƒ๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

 

T๋ฅผ S๋กœ ๋ฐ”๊พธ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋งจ ๋’ค๊ฐ€ A์ธ์ง€, ๋งจ ์•ž์ด B์ธ์ง€๋ฅผ ํ†ตํ•ด ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋งŒ์•ฝ S๋ฅผ T๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋”๋ผ๋ฉด ๋งจ ๋’ค์— A๋ฅผ ๋ถ™์ด๊ณ , ๋งจ ๋’ค์— B๋ฅผ ๋ถ™์ด๊ณ  ๋’ค์ง‘๊ธฐ๋ฅผ ํ•ด๋„ T ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ ์™„์„ฑํ•ด์•ผ S๋ฅผ T๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

  • S, T ์ž…๋ ฅ
  • queue: ๋ฌธ์ž์—ด ์ €์žฅ
  • flag: T -> S๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š”์ง€ check
  • queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
    • ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ๋บ€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ S์˜ ๊ธธ์ด๋ณด๋‹ค ์ž‘์œผ๋ฉด S๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— continue
    • ๋ฌธ์ž์—ด ๋งจ ๋’ค๊ฐ€ 'A'๋ผ๋ฉด ์ œ๊ฑฐ -> ๊ทธ ๋ฌธ์ž์—ด์ด S๋ผ๋ฉด break; S๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด queue์— ์ถ”๊ฐ€
    • ๋ฌธ์ž์—ด ๋งจ ์•ž์ด 'B'๋ผ๋ฉด ์ œ๊ฑฐ ๋ฐ ๋’ค์ง‘๊ธฐ -> ๊ทธ ๋ฌธ์ž์—ด์ด S๋ผ๋ฉด break; S๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด queue์— ์ถ”๊ฐ€

์ƒ๊ฐ๐Ÿค”

 

์˜ˆ์ „์— ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚˜์„œ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ๋„์ „ํ•ด๋ณด๊ณ  ์‹ถ์–ด ๋„์ „ํ•ด๋ดค์ง€๋งŒ ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ์˜€๋‹ค.

 

 


'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 16197_๋‘ ๋™์ „  (0) 2022.12.26
[Baekjoon] 9019_DSLR  (0) 2022.12.23
[Baekjoon] 15644_๊ตฌ์Šฌ ํƒˆ์ถœ 3  (0) 2022.12.21
[Baekjoon] 13459_๊ตฌ์Šฌ ํƒˆ์ถœ  (0) 2022.12.20
[Baekjoon] 13460_๊ตฌ์Šฌ ํƒˆ์ถœ 2  (0) 2022.12.19