티스토리 뷰
문제
크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게 이동할 수 있다. 두 칸이 인접하다는 것은 두 칸이 변을 공유하는 경우이다.
목장에 울타리를 설치해 늑대가 양이 있는 칸으로 갈 수 없게 하려고 한다. 늑대는 울타리가 있는 칸으로는 이동할 수 없다. 울타리를 설치해보자.
입력
첫째 줄에 목장의 크기 R, C가 주어진다.
둘째 줄부터 R개의 줄에 목장의 상태가 주어진다. '.'는 빈 칸, 'S'는 양, 'W'는 늑대이다.
출력
늑대가 양이 있는 칸으로 갈 수 없게 할 수 있다면 첫째 줄에 1을 출력하고, 둘째 줄부터 R개의 줄에 목장의 상태를 출력한다. 울타리는 'D'로 출력한다. 울타리를 어떻게 설치해도 늑대가 양이 있는 칸으로 갈 수 있다면 첫째 줄에 0을 출력한다.
제한
- 1 ≤ R, C ≤ 500
핵심 포인트
- 울타리는 어떻게 설치하든 상관없다.
- 즉, 상하좌우로 늑대와 양이 붙어있는지만 파악하면 된다.
- 늑대와 양이 붙어있으면 0을 출력한다.
- 늑대와 양이 붙어있지 않으면 1을 출력한 뒤 목장의 .을 D로 replace 하여 목장을 출력해줬다.
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int R = Integer.valueOf(st.nextToken());
int C = Integer.valueOf(st.nextToken());
String[] pastures = new String[R];
char[][] pasturesCharArr = new char[R][C];
int answer = 1;
for(int i = 0;i<R;i++) {
String pasture = br.readLine();
if(pasture.contains("SW") || pasture.contains("WS")) {
answer = 0;
}
pastures[i] = pasture;
pasturesCharArr[i] = pasture.toCharArray();
}
for(int i = 0;i<C;i++) {
StringBuilder sb = new StringBuilder();
for(int j =0;j<R;j++) {
sb.append(pasturesCharArr[j][i]);
}
String pasture = sb.toString();
if(pasture.contains("SW") || pasture.contains("WS")) {
answer = 0;
}
}
System.out.println(answer);
if(answer == 1) {
for(String pasture : pastures) {
System.out.println(pasture.replaceAll("\\\\.","D"));
}
}
}
}
'알고리즘' 카테고리의 다른 글
BOJ1080 행렬 java (0) | 2022.02.17 |
---|---|
BOJ17413 단어 뒤집기 2 java (0) | 2022.02.16 |
BOJ16675 두 개의 손 java (0) | 2022.02.16 |
BOJ14620 꽃길 java (0) | 2022.02.14 |
BOJ10539 수빈이와 수열 java (0) | 2022.02.13 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 정규표현식
- 클린 코드
- 클린 아키텍처
- 객체지향
- 코테
- AWS
- Spring Boot
- kkoon9
- Algorithm
- 테라폼
- Olympiad
- Kotlin
- node.js
- 디자인 패턴
- Spring
- 디자인패턴
- BOJ
- programmers
- kotest
- 프로그래머스
- BAEKJOON
- 알고리즘
- C++
- 백준
- Java
- 이펙티브 자바
- 이팩티브 자바
- JPA
- MSA
- Effective Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함