![[BOJ] 백준_23841번_데칼코마니_C/C++](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FD3k9c%2Fbtro12TIFtC%2FAAAAAAAAAAAAAAAAAAAAAKB_lPI9YsvcG-ju4qK-etSJ-dOP05A73nwCvLWvJks2%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DvXNsMTyX%252FcWwUwI%252FuRMYeJmOy0g%253D)
[BOJ] 백준_23841번_데칼코마니_C/C++백준 알고리즘2021. 12. 26. 23:34
목차
문제 출처
https://www.acmicpc.net/problem/23841
23841번: 데칼코마니
첫 줄에 그림의 세로 길이 정수 N과 가로 길이 정수 M이 주어진다. (1 ≤ N, M ≤ 50, M은 짝수) N개 줄에 M개씩 그림에 대한 정보가 주어진다. 물감은 26가지가 있고, 각각 알파벳 대문자 하나로 나타
www.acmicpc.net
코드
//[BOJ] 23841번 데칼코마니
#include<iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
char* arr = new char[m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++) //입력받기
{
cin >> arr[j];
}
for (int k = m / 2; k < m; k++) //검사하기
{
if (arr[k] != arr[m - k - 1])
{
if (arr[k] != '.' && arr[m - k - 1] == '.')
arr[m - k - 1] = arr[k];
else
arr[k] = arr[m - k - 1];
}
}
for (int l = 0; l < m; l++) //출력하기
{
cout << arr[l];
}
cout << endl;
}
return 0;
}
풀이 과정
문자열의 크기 m을 입력받아 문자열의 개수 n 만큼 반복할 for문을 만든다. 먼저 문자열을 하나씩 입력받는다. k가 m/2 부터 m보다 작을 때 까지 arr[k]와 arr[m - k - 1]는 서로 데칼코마니 관계를 이룬다. 따라서 그 둘이 다를 때 데칼코마니를 만들어주어야 하므로 arr[k]가 공백(.)이 아니고 arr[m - k - 1]가 공백(.)일 경우는 arr[m - k - 1] 자리에 arr[k]를 저장하고 아닐 경우는 반대로 arr[k] 자리에 arr[m - k - 1]를 저장한다. 이후 차례로 출력할 경우 데칼코마니의 형태로 출력된다.
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_1026번_보물_C/C++ (0) | 2022.01.08 |
---|---|
[BOJ] 백준_11726번_2xn 타일_C/C++ (2) | 2021.12.30 |
[BOJ] 백준_23842번_성냥개비_C/C++ (0) | 2021.12.23 |
[BOJ] 백준_8958번_ OX퀴즈_C/C++ (6) | 2021.11.20 |
[BOJ] 백준_1546번_ 평균_C/C++ (0) | 2021.11.20 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!