티스토리 뷰

반응형

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

 

1343번: 폴리오미노

첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 그리디 알고리즘

 


 

⊙ 문제 접근 과정

 

string으로 값을 입력받고 조건문으로 구현했다.

 

마지막에 만약 string에 X가 존재하면 -1 출력

존재하지 않는다면 string 출력


 

⊙ 문제 풀이

 

#include <iostream>

using namespace std;

int stack=0;
string s;

int main() {
    cin >> s;

    for(int i=0;i<s.length();i++) {
        stack++;

        if(s[i]=='.') {
            stack--;
            if(stack==2) {
                for(int j=1;j<=2;j++)
                    s[i-j]='B';
                stack=0;
            }
            stack=0;
        } else {
            if(stack==4) {
                for(int j=0;j<4;j++)
                    s[i-j]='A';
                stack=0;
            }
            if(i==s.length()-1) {
                if(stack==2) {
                    for(int j=0;j<2;j++)
                        s[i-j]='B';
                    stack=0;
                }
            }
        }
    }
    
    if(s.find('X')!=std::string::npos) cout << -1;
    else cout << s;
    
}

⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함