728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 알파벳 대문자로 이루어진 최대 15글자 단어가 주어진다.
출력
다섯 줄에 걸쳐, 입력으로 주어진 단어를 피터팬 프레임과 웬디 프레임으로 장식한 결과를 출력한다.
소스코드
#include <iostream> #include <string> #include <vector> using namespace std; int main(void) { string str; int len; cin >> str; len = str.length(); vector<string> arr(5); arr[0] = "..#.."; for (int i = 1; i < str.length(); i++) { if (i % 3 == 2) arr[0] += ".*.."; else arr[0] += ".#.."; } arr[4] = arr[0]; arr[1] = ".#.#."; for (int i = 1; i < str.length(); i++) { if (i % 3 == 2) arr[1] += "*.*."; else arr[1] += "#.#."; } arr[3] = arr[1]; arr[2] = "#."; arr[2] += str[0]; arr[2] += ".#"; for (int i = 1; i < str.length(); i++) { if (i % 3 == 1) { arr[2] += "."; arr[2] += str[i]; if (i == str.length() - 1) arr[2] += ".#"; else arr[2] += ".*"; } else if (i % 3 == 2) { arr[2] += "."; arr[2] += str[i]; arr[2] += ".*"; } else { arr[2] += "."; arr[2] += str[i]; arr[2] += ".#"; } } for (int i = 0; i < 5; i++) cout << arr[i] << '\n'; }
Tip
이 문제에서 가장 유의해야 할 점은 두 프레임이 겹치는 구간이 존재한다는 점이다. 필자도 이 문제를 풀면서 처음에는 글자 하나 당 프레임 하나씩 적용해서 출력했지만, 문제 조건과 문제 예시를 보면 프레임의 끝과 시작이 한 칸 씩 겹치게 출력해야 한다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 3486 - Adding Reversed Numbers(ACM-ICPC Regionals) (0) | 2019.02.07 |
---|---|
백준] 10826 - 피보나치 수 4 (0) | 2019.02.06 |
백준] 1049 - 기타줄 (0) | 2019.02.03 |
백준] 9020 - 골드바흐의 추측(ACM-ICPC Regionals) (0) | 2019.02.03 |
백준] 5692 - 팩토리얼 진법(ACM-ICPC Regionals) (0) | 2019.01.27 |