COCI/3번

백준 3054 피터팬 프레임 (COCI 2006/2007 Contest #1 3번)

ssam.. 2020. 3. 9. 20:58

문제 링크: https://www.acmicpc.net/problem/3054

 

3054번: 피터팬 프레임

문제 "피터팬 프레임"은 단어를 다이아몬드 형태로 장식하는 것이다. 알파벳 X를 피터팬 프레임으로 장식하면 다음과 같다. ..#.. .#.#. #.X.# .#.#. ..#.. "웬디 프레임"은 피터팬 프레임과 유사하지만, 다이아몬드를 '*'로 만드는 것이다.  알파벳 X를 웬디 프레임으로 장식하면 다음과 같다. ..*.. .*.*. *.X.* .*.*. ..*.. 단어가 주어졌을 때, 3의 배수 위치(세 번째, 여섯 번째, 아홉번째, ...)에 있는 알파

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <bits/stdc++.h>
using namespace std;
 
char a[5][61];
 
int main() {
    string s;
    cin >> s;
 
    int n = s.size();
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < 5; j++) {
            for(int k = 4 * i; k < 4 * i + 5; k++) {
                if(a[j][k] != '*') a[j][k] = '.';
                if(j == 0 || j == 4) {
                    if(k % 4 == 2) {
                        a[j][k] = '#';
                        if(i % 3 == 2) a[j][k] = '*';
                    }
                }
                if(j == 1 || j == 3) {
                    if(k % 4 == 1 || k % 4 == 3) {
                        a[j][k] = '#';
                        if(i % 3 == 2) a[j][k] = '*';
                    }
                }
                if(j == 2) {
                    if(i % 3 != 2 && k % 4 == 0 && a[j][k] != '*') a[j][k] = '#';
                    if(i % 3 == 2 && k % 4 == 0) a[j][k] = '*';
                    if(k % 4 == 2) a[j][k] = s[i];
                }
            }
        }
    }
 
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j <= 4 * n; j++) {
            cout << a[i][j];
        }
        cout << '\n';
    }
    return 0;
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <bits/stdc++.h>
using namespace std;
 
char a[5][61];
 
int main() {
    string s;
    cin >> s;
 
    int n = s.size();
    for(int i = 0; i < 5; i++for(int j = 0; j < 61; j++)
        a[i][j] = '.';
 
    for(int i = 0; i < n; i++) {
        int y = 2;
        int x = 4 * i + 2;
        a[y][x] = s[i];
 
        if(i % 3 == 2) {
            a[y-2][x] = '*';
            a[y-1][x-1= '*';
            a[y-1][x+1= '*';
            a[y][x-2= '*';
            a[y][x+2= '*';
            a[y+1][x-1= '*';
            a[y+1][x+1= '*';
            a[y+2][x] = '*';
        }
        else {
            a[y-2][x] = '#';
            a[y-1][x-1= '#';
            a[y-1][x+1= '#';
            if(a[y][x-2!= '*') a[y][x-2= '#';
            a[y][x+2= '#';
            a[y+1][x-1= '#';
            a[y+1][x+1= '#';
            a[y+2][x] = '#';
        }
    }
 
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j <= 4 * n; j++) {
            cout << a[i][j];
        }
        cout << '\n';
    }
    return 0;
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter