[백준 BOJ] 11586번 지영 공주님의 마법 거울 (C++/cpp)

2022. 11. 8. 11:35PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/11586

 

11586번: 지영 공주님의 마법 거울

천나라 민호성의 지영 공주님은 매우 아름답다. 공주님 자신도 이 세상 그 누구보다 자신이 아름답다는 것을 알고 있다. 공주님은 자신의 아름다움이 세월의 저편으로 사라지는 것을 매우 두려

www.acmicpc.net

백준 BOJ 11586번 지영 공주님의 마법 거울 문제 사진

 

접근 방법 - 문자열 연산의 기본 문제

백준의 11586번 문제는 문자열 연산에 있어 기본적인 원리를 다루고 있는 문제이다.

해당 문제는, 문제에 나오는 거울의 기분에 따라 거울에 비치는 모습을 임의로 변경하여 출력해야 하는 문제이다.

문제에 따르면, 아래처럼 출력을 수행해야 한다.

거울의 기분이 1일 때, 그대로 출력
거울의 기분이 2일 때, 좌우 반전하여 출력
거울의 기분이 3일 때, 상하 반전하여 출력

순서만 바꾸어 출력하면 되기 때문에, 반복문을 응용하는 데에 능숙하다면 쉽게 풀 수 있는 문제로 예상된다.

혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면, 아래의 설명과 코드를 참고해보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 문자열들을 입력받을 배열(ch)을 전역 변수로 선언해둔다.

 

2) 정사각형 배열의 가로/세로 길이(n)와 이에 따른 ch를 순차적으로 입력받는다.

 

3) 거울의 기분(mood)을 입력받는다.

 

4) mood에 대한 switch 구문을 작성하여, 아래의 연산을 취한다.

- 만일 mood의 값이 1이라면, 행열 순서 변함없이 그대로 출력되게끔 한다.

- 만일 mood의 값이 2라면, 열의 순서를 뒤집어 출력되게끔 한다. (안쪽 반복문으로 역순 출력 수행)

- 만일 mood의 값이 3이라면, 행의 순서를 뒤집어 출력되게끔 한다. (바깥쪽 반복문으로 역순 출력 수행)

 

5) 출력이 모두 완료되었다면, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 11586번 코드
char ch[101][101];
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);

	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> ch[i][j];
		}
	}
	int mood;
	cin >> mood;

	switch (mood) {
	case 1:
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				cout << ch[i][j];
			}
			cout << endl;
		}
		break;
	case 2:
		for (int i = 0; i < n; i++) {
			for (int j = n - 1; j >= 0; j--) {
				cout << ch[i][j];
			}
			cout << endl;
		}
		break;
	case 3:
		for (int i = n - 1; i >= 0; i--) {
			for (int j = 0; j < n; j++) {
				cout << ch[i][j];
			}
			cout << endl;
		}
		break;
	}
}

 

제출 결과

백준 BOJ 11586번 지영 공주님의 마법 거울 문제 C++ 제출 결과

(2022.08.07 백준 11586번 문제 제출 결과)

반응형