๐Ÿ•๏ธ ICPC Sinchon/Greedy

[BOJ][C++] ๋ฐฑ์ค€ 1343๋ฒˆ: ํด๋ฆฌ์˜ค๋ฏธ๋…ธ (Silver V)

์„ ๋‹ฌ 2025. 3. 10. 21:42
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

๋ฏผ์‹์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ 2๊ฐœ๋ฅผ ๋ฌดํ•œ๊ฐœ๋งŒํผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. AAAA์™€ BB
์ด์ œ '.'์™€ 'X'๋กœ ์ด๋ฃจ์–ด์ง„ ๋ณด๋“œํŒ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฏผ์‹์ด๋Š” ๊ฒน์นจ์—†์ด 'X'๋ฅผ ๋ชจ๋‘ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋กœ ๋ฎ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ, '.'๋Š” ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋กœ ๋ฎ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.
ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋กœ ๋ชจ๋‘ ๋ฎ์€ ๋ณด๋“œํŒ์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ณด๋“œํŒ์ด ์ฃผ์–ด์ง„๋‹ค. ๋ณด๋“œํŒ์˜ ํฌ๊ธฐ๋Š” ์ตœ๋Œ€ 50์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์•ž์„œ๋Š” ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฎ์„ ์ˆ˜ ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

// ํ’€์ด : https://whkakrkr.tistory.com

#include <bits/stdc++.h>

using namespace std;

string solution(string&board) {
    string ans = "";
    
    // ๋ฌธ์ž์—ด์„ ์ˆซ์ž ๋ฒกํ„ฐ๋กœ
    vector<int>v;
    int cnt = board[0]=='X' ? 1 : 0;
    for(int i=1; i<board.size(); i++) {
        char c = board[i];
        if(c == 'X') {
            if(cnt == 0) {
                v.push_back(0);
            }
            cnt++;
        } else if(c == '.') {
            v.push_back(cnt);
            cnt = 0;
        }
    }
    v.push_back(cnt);
    
    // ๋ฒกํ„ฐ๋ฅผ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๋กœ ๋ณ€ํ™˜
    for(int i : v) {
        if(i==0) {
            ans += '.';
            continue;
        }
        
        if(i%2 == 1) {
            return "-1";
        }
        
        for(int j=0; j<i/4; j++) {
            ans += "AAAA";
        }
        if(i%4 == 2) {
            ans += "BB";
        }
    }

    return ans;
}

int main() {
    ios_base::sync_with_stdio(false);
	cout.tie(NULL);
	cin.tie(NULL);
	
	string board;
	cin >> board;
	
	cout << solution(board);
	
    return 0;
}
๋ฐ˜์‘ํ˜•