https://www.acmicpc.net/problem/17363
<C++>
#include <bits/stdc++.h>
#define F_I ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
using namespace std;
string s[104];
char a[104][104]; //맨 처음 문자들을 담을 2차원 배열
char b[104][104]; //a 배열을 옆으로 쓰러뜨렸을 때 다시 담길 2차원 배열
int n, m;
int main()
{
F_I;
cin >> n >> m;
for (int i = 0; i < n; i++)//입력 받기
{
cin >> s[i];
for (int j = 0; j < s[i].length(); j++)
{
a[i][j] = s[i][j];
}
}
for (int i = 0; i < n; i++) //입력 받은 문자들을 다른 문자로 치환하기
{
for (int j = 0; j < m; j++)
{
if (a[i][j] == '-')
a[i][j] = '|';
else if (a[i][j] == '|')
a[i][j] = '-';
else if (a[i][j] == '/')
a[i][j] = '\\';
else if (a[i][j] == '\\')
a[i][j] = '/';
else if (a[i][j] == '^')
a[i][j] = '<';
else if (a[i][j] == '<')
a[i][j] = 'v';
else if (a[i][j] == 'v')
a[i][j] = '>';
else if (a[i][j] == '>')
a[i][j] = '^';
}
}
for (int i = 0; i < n; i++) // a 배열에서 치환이 모두 완료된 문자들을 b 배열에 옮겨담기
{
for (int j = 0; j < m; j++)
{
b[(m-1) - j][i] = a[i][j]; //예시로 2차원 배열을 아무거나 만들어서 규칙성을 찾아내었다.
}
}
for (int i = 0; i < m; i++) // b 배열 출력하기
{
for (int j = 0; j < n; j++)
{
cout << b[i][j];
}
cout << endl;
}
}
> 주의 1 : n과 m, 다시 말해서 세로 길이와 가로 길이의 범위를 잘 따져야 한다.
i, j의 범위가 n까지인지, m까지인지를 잘 구별하기!
> 주의 2 : / 는 \(역 슬래쉬)로 치환해야 하는데, 이때 \이 출력되려면 \ 두개를 써야 한다.
이 부분은 다른 분이 설명해 놓으신 링크를 참고하기! https://1d1cblog.tistory.com/103
'Problem Solving > 백준' 카테고리의 다른 글
[백준] 15650번 : N과 M (2) (0) | 2020.07.15 |
---|---|
[백준 ] 1748번 : 수 이어 쓰기 1 (0) | 2020.07.14 |
[백준] 4690번 : 완전 세제곱 (0) | 2020.07.12 |
[백준] 2309번 : 일곱 난쟁이 (0) | 2020.07.11 |
[백준] 2357번 : 최솟값과 최대값 (0) | 2020.07.10 |