[BOJ] 1343 폴리오미노

Algorithm 2023. 1. 24. 23:54
반응형

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

 

1343번: 폴리오미노

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

www.acmicpc.net

c#

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;

namespace BOJ
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
            StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));

            string board = sr.ReadLine();

            var a = board.Replace("XXXX", "AAAA");
            var b = a.Replace("XX", "BB");
            
            if (b.Contains('X'))
            {
                sw.WriteLine(-1);
            }
            else
            {
                sw.WriteLine(b);    
            }


            sr.Close();
            sw.Close();


        }
        
        
    }
}

 

 

 

 

c++

  • board를 자리 순서대로 탐색하면서 '.' 문자가 나오는 경우 만약 앞의 문자가 홀수 개수로 끝났을 경우는 덮을 수 없는 경우이므로 -1을 반환, 'X' 문자가 나오는 경우는 2개일 때 4개일 때를 구분해서 각각 "AAAA", "BB"로 출력되게 해준다.
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int main(void) {

	string board, result;
	int cnt = 0;

	cin >> board;

	board += ' ';

	for (int i = 0; i < board.size() - 1; i++) {

		if (board[i] == 'X') cnt++;

		if (board[i] == '.') {
			result += ".";
			if (cnt % 2 != 0) break;
			else cnt = 0;
		}

		if (cnt == 2 && board[i + 1] != 'X') {
			result += "BB";
			cnt = 0;
		}
		else if (cnt == 4) {
			result += "AAAA";
			cnt = 0;
		}


	}

	if (cnt % 2 == 1) cout << -1;
	else cout << result;

}

 

 

반응형

'Algorithm' 카테고리의 다른 글

[BOJ] 1654 랜선 자르기  (0) 2023.01.25
[BOJ] 1920 수 찾기  (0) 2023.01.25
C#으로 구현한 우선순위 큐 Priority Queue  (0) 2023.01.24
[BOJ] 2684 동전 게임  (0) 2023.01.21
[프로그래머스] 전화번호 목록  (0) 2023.01.20
: