```
백준 23841번 데칼코마니 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 23841번 풀이
https://www.acmicpc.net/problem/23841
23841번: 데칼코마니
첫 줄에 그림의 세로 길이 정수 N과 가로 길이 정수 M이 주어진다. (1 ≤ N, M ≤ 50, M은 짝수) N개 줄에 M개씩 그림에 대한 정보가 주어진다. 물감은 26가지가 있고, 각각 알파벳 대문자 하나로 나타
www.acmicpc.net
백준 23841번 데칼코마니는
난이도 브론즈 등급의 문제로서
그림이 배열 형태로 주어지면
접어서 펼친 데칼코마니 형식으로 출력해주면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력을 받고
배열을 반만 돌면서
양쪽(접은면)이 같으면 넘어가고
양쪽이 다를 경우 한쪽이 "."이 아니면 해당 값을 사용합니다.
배열을 전부 돌필요 없이 반만 돌았습니다만
스트링빌더를 추가로 안 쓰고 배열을 전부 도는 게 코드 유지에 좋을 것 같다는 생각도 듭니다.
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[] input01 = br.readLine().split(" ");
final int rows = Integer.parseInt(input01[0]);
final int cols = Integer.parseInt(input01[1]);
char[][] picture = new char[rows][cols];
for (int i = 0; i < rows; i++) {
picture[i] = br.readLine().toCharArray();
}
//출력
System.out.print(solution(rows, cols, picture));
}
private static String solution(int rows, int cols, char[][] picture) {
StringBuilder sb = new StringBuilder();
final int HalfCols = cols / 2;
for (int i = 0; i < rows; i++) {
StringBuilder sbBeforeHalf = new StringBuilder();
StringBuilder sbAfterHalf = new StringBuilder();
for (int j = 0; j < HalfCols; j++) {
char curChar = picture[i][j];
char curCharMatch = picture[i][cols - j - 1];
if (curChar != curCharMatch) {
if (curChar == '.') {
sbBeforeHalf.append(curCharMatch);
sbAfterHalf.insert(0, curCharMatch);
} else if (curCharMatch == '.') {
sbBeforeHalf.append(curChar);
sbAfterHalf.insert(0, curChar);
}
} else {
sbBeforeHalf.append(curChar);
sbAfterHalf.insert(0, curChar);
}
}
sb.append(sbBeforeHalf).append(sbAfterHalf);
sb.append("\n");
}
return sb.toString();
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 2605번 줄 세우기 JAVA 구현해보기 (0) | 2022.07.05 |
|---|---|
| 백준 7576번 토마토 JAVA 구현해보기 (0) | 2022.07.04 |
| 백준 25304번 영수증 JAVA 구현해보기 (0) | 2022.06.27 |
| 백준 10833번 사과 JAVA 구현해보기 (0) | 2022.06.25 |
| 백준 18405번 경쟁적 전염 JAVA 구현해보기 (0) | 2022.06.25 |