본문 바로가기

백준/C++

[BaeKJoon/C++] 백준 11586 c++ 지영 공주님의 마법 거울

반응형

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

 

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

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

www.acmicpc.net

문제

마법거울의 심리상태는 1부터 3까지의 자연수로 표현할 수 있으며, 숫자가 클수록 더 화가 난 상태를 의미한다. 마법거울의 심리상태가 1일 때는 지영 공주님의 모습을 있는 그대로 표현하고, 2일 때는 좌/우로 반전된 모습을, 3일 때는 상/하로 반전된 모습을 표현한다. 정사각형 형태의 마법거울의 크기와 거울에 비친 지영 공주님의 원래 모습, 마법거울의 심리상태가 주어졌을 때, 마법거울에 비친 지영 공주님의 모습을 출력하라.

입력

첫 번째 줄에 정사각형 모양의 마법거울의 크기를 나타내는 자연수 N(2 ≤ N ≤ 100)이 입력된다. 그 다음 N개의 줄에 걸쳐 거울에 비친 지영 공주님의 원래 모습이 각 줄에 N개의 문자로 표현된다. 마법거울은 알파벳 대소문자로만 거울에 비친 상을 표현할 수 있다. 마지막 줄에 마법거울의 심리상태를 나타내는 정수 K(1 ≤ K ≤ 3)가 주어진다.

출력

마법거울의 심리상태에 따라 거울에 비친 지영공주님의 모습을 N×N크기의 정사각형 형태로 출력하라. 반전된 모습은 입력으로 주어진 문자의 위치를 반전시키는 것을 의미한다.

예제 입력 1 복사

8
OOOOOOOO
OKKOOEEO
OKKOOEEO
OOOSSOOO
OOOSSOOO
OAOOOOAO
OOAAAAOO
OOOOOOOO
3

예제 출력 1 복사

OOOOOOOO
OOAAAAOO
OAOOOOAO
OOOSSOOO
OOOSSOOO
OKKOOEEO
OKKOOEEO
OOOOOOOO

풀이

1. 1일 때는 지영 공주님의 모습을 있는 그대로 표현

2.  2일 때는 좌/우로 반전된 모습

3.  3일 때는 상/하로 반전

코드

// 문자열 좌우, 상하로 뒤집는 문제
// kepoint : reverse
// [BaeKJoon/C++] 백준 11586 c++ 지영 공주님의 마법 거울
 
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main() {
 
    int test;
    cin>>test;
 
    string str;
 
    vector<string> vec;
 
    for(int i=0; i<test; i++){
        cin>>str;
        vec.push_back(str);
    }
 
    int k;
    cin>>k;
 
    // 풀이 1 입력된 문자열 그대로 출력
    if(k==1){   
        for(int i=0; i<test; i++){
            cout<<vec[i]<<"\n";
        }
    }
 
    // 풀이 2 좌/우로 반전된 모습 출력
    else if(k==2){
        for(int i=0; i<test; i++){
            // reverse 헤더파일 = <algorithm>
            reverse(vec[i].begin(), vec[i].end());  // keypoint
            cout<<vec[i]<<"\n";
        }
    }
 
    // 풀이 3 상/하로 반전된 모습 출력
    else{
        for(int i=test-1; i>=0; i--){
            cout<<vec[i]<<"\n";
        }
    }
 
    return 0;
}
 
cs

 

반응형