피터팬 프레임 (백준 3054)

코딩생활·2024년 2월 19일
0

백준문제풀이

목록 보기
242/308

안녕하세요. 오늘은 프레임을 만들 거예요.

문제

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

아이디어

중간 줄 빼고는 그냥 %를 잘 쓰면 됩니다.
중간 줄은 좀 어려운데 맨 첫 글자는 무조건 #이고 맨 마지막 글자도 무조건 #입니다. 하지만 len이 3의 배수라면, 즉 #으로 끝나지 않는다면 맨 마지막 글자만 *입니다.
이걸 잘 구현해주면 됩니다.

소스코드

#include <iostream>
#include <string>
#define ll long long
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll len, i, j;
    string s;

    cin >> s; len = s.length();
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 4 * len + 1; j++)
        {
            if (i == 0 || i == 4)
            {
                if (j % 4 == 2)
                {
                    if (((j - 2) / 4) % 3 == 2) cout << '*';
                    else cout << '#';
                }
                else cout << '.';
            }
            else if (i == 1 || i == 3)
            {
                if (j % 2 == 1)
                {
                    if (j % 12 == 9 || j % 12 == 11) cout << '*';
                    else cout << '#';
                }
                else cout << '.';
            }
            else
            {
                if (j % 2 == 0)
                {
                    if (j % 4 == 2) cout << s[j / 4];
                    else
                    {
                        if (j == 0 || (len % 3 != 0 && j == 4 * len)) cout << '#'; //맨 끝이면 #
                        else
                        {
                            if (j % 12 == 0 || j % 12 == 8) cout << '*';
                            else cout << '#';
                        }
                    }
                }
                else cout << '.';
            }
        }
        cout << "\n";
    }
}


감사합니다.

0개의 댓글