반응형
https://www.acmicpc.net/problem/11586
문제
마법거울의 심리상태는 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 |
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 4458 c++ 첫 글자를 대문자로 (0) | 2022.02.27 |
---|---|
[BaeKJoon/C++] 백준 11945 c++ 뜨거운 붕어빵 (0) | 2022.02.26 |
[BaeKJoon/C++] 백준 11047 c++ 동전 0 (0) | 2022.02.24 |
[BaeKJoon/C++] 백준 9946 c++ 단어 퍼즐 (0) | 2022.02.23 |
[BaeKJoon/C++] 백준 8974 c++ 희주의 수학시험 (0) | 2022.02.22 |