Search

[Baekjoon] 1343 폴리오미노

Status
UPLOADING
Date
2023/12/30
Tags
Algorithm

설명

민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.

출력

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

예시 입력

예시 출력

XX.XXXXXXXXXX..XXXXXXXX...XXXXXX
JavaScript
복사
BB.AAAAAAAABB..AAAAAAAA...AAAABB
JavaScript
복사

풀이 과정

X를 치환할 수 있는 건 AAAA와 BB 뿐입니다. 즉, X가 4의 배수 혹은 2의 배수로 연결되어 있어야 치환 가능합니다.
처음에는 이를 StringTokenizer로 나눠놓고 생각해야 되나 싶었지만, 자바 내 라이브러리를 통해 쉽게 해결할 수 있었습니다.

최종 코드

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class _1343 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine().replaceAll("XXXX", "AAAA").replaceAll("XX", "BB"); System.out.println(input.contains("X") ? -1 : input); } }
JavaScript
복사