Algorithm/BAEKJOON

[ C / C++ ] 백준 17363 우유가 넘어지면?

곽수진 2022. 5. 19. 10:14
반응형

문제

유머 감각이 뛰어난 성원이는 매일 재미있는 농담을 준비한다. 오늘 준비한 농담은 바로 이것이다.

우유가 넘어질 때 뭐라고 하게? 답은 "아야"! 깔깔!

친구들의 반응이 심드렁하자, 성원이는 해설을 덧붙였다.

"우유"가 세로로 적혀 있는 상자를 왼쪽으로 툭 넘어뜨리면 "아야"가 되잖아? 이게 마치 우유가 넘어져서 아파하는 것 같다는 점이 웃음 포인트야!

그럼에도 불구하고 친구들이 웃지 않자, 성원이는 친구들이 공간지각력이 부족해 상자를 넘어뜨리는 모습을 상상하지 못한다고 생각했다. 그래서 상자를 넘어뜨리는 프로그램을 만들어 친구들에게 결과를 보여주기로 했다.

성원이는 상자에 "우유"가 아니라 다른 그림이 그려져 있어도 프로그램이 잘 동작하기를 원한다. 성원이는 상자의 면을 격자로 나누고 각 칸에 아래 문자들 중 하나를 그려 넣는 방식으로 그림을 그린다.

문자이름ASCII돌린 뒤

. 온점 46 .
O 대문자 O 79 O
- 하이픈 45 |
| 세로 바 124 -
/ 슬래시 47 \
\ 역슬래시 92 /
^ 캐럿 94 <
< 왼쪽 부등호 60 v
v 소문자 V 118 >
> 오른쪽 부등호 62 ^

그러나 성원이는 내일의 농담을 생각하느라 프로그램을 만들 시간이 없다. 성원이 대신 프로그램을 만들어 주자.

 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>	
using namespace std;

char arr[101][101];
char input[10] = { '.', 'O', '|', '-', '/', '\\', '^', '<', 'v', '>' };
char output[10] = { '.', 'O', '-', '|', '\\', '/', '<', 'v', '>', '^' };

int main() {

	int n, m;
	scanf("%d%d", &n, &m);

	for (int i = 0; i < n; i++) 
	{
		scanf("%s", arr[i]);
	}

	for (int i = 0; i < n; i++) 
	{
		for (int j = 0; j < m; j++) 
		{
			for (int k = 0; k < 10; k++) 
			{
				if (arr[i][j] == input[k]) 
				{
					arr[i][j] = output[k];
					break;
				}
			}
		}
	}

	for (int i = m - 1; i >= 0; i--) 
	{
		for (int j = 0; j < n; j++) 
		{
			printf("%c", arr[j][i]);
		}
		printf("\n");
	}

	return 0;
}
반응형