[BOJ] 백준_23841번_데칼코마니_C/C++백준 알고리즘2021. 12. 26. 23:34
목차
문제 출처
https://www.acmicpc.net/problem/23841
코드
//[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
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[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
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!