[백준/BOJ]1343. 폴리오미노 [Silver 5]

jychan99·2021년 8월 24일
0
post-thumbnail
  1. 폴리오미노

문제출처 : https://www.acmicpc.net/problem/1343

code

#include <stdio.h>
#include <string.h>
int main()
{
	char board[500];
	int i,index, cnt = 0, flag = 0;
	scanf("%s", board);
	int len = strlen(board);
	for (i = 0; i < len; i++)
	{
		if (board[i] == 'X')
			cnt++;
		else
		{
			if (cnt % 2 != 0)
			{
				flag = 1;
				break;
			}
			cnt = 0;
		}
	}
	if (cnt % 2 != 0)
		flag = 1;
	if (flag == 1)
		printf("-1");
	else
	{
		for (i = 0; i < len;)
		{
			if (board[i] == 'X' && board[i + 1] == 'X' && board[i + 2] == 'X' && board[i + 3] == 'X')
			{
				for (index = 0; index < 4; index++)
				{
					board[i + index] = 'A';
				}
				i += 4;
			}
			else if (board[i] == 'X' && board[i + 1] == 'X')
			{
				for (index = 0; index < 2; index++)
				{
					board[i + index] = 'B';
				}
				i += 2;
			}
			else
				i++;
		}
		printf("%s", board);
	}
	return 0;
}

이번주는 대표님이 휴가가셔서 알바도 안가고 너무 한가롭다.
너무 한가로운탓일까? 움직이기가 싫고 아무것도 하기가 싫다 ㅋㅋㅋㅋㅋ
그래서 요즘 군대에서보고 한동안 안보던 넷플릭스에 빠졌다.
웬만한 재밌을것같은 미드 영드는 전부다 봐버려서 바이올렛 에버가든이라는 애니메이션이 그렇게 띵작이라고 하길래 봤는데,너무 재밌었다 ㅋㅋㅋㅋㅋㅋ
아 재밌긴한데 하루가 그냥 없어진것 같다 (사실 에어컨밑 소파에서 담요덮고 넷플릭스보면서 빙수도 먹고 저녁으로 삼겹살도 먹었다 이게 찐 휴가가 아닐까?)

여튼 코드설명을 하자면,
폴리오미노는 정사각형 n개를 서로 이어붙인 다각형인데, 쉽게말해서 테트리스 블럭이라고 보면된다. 민식이는 AAAA블럭과 BB블럭을 무한대로 갖고있는데, 이블럭들을 X가적힌 보드판에 덮으려고 한다. 참고로 출력은 사전순으로 해야하므로 공간이 있다면 AAAA블록을 먼저 써야한다. 예를들어 6개의 X(XXXXXX)가 있으면 AAAABB이여야만 한다 BBBBBB면 안되고 BBAAAA여도 안된다.

그래서 단순하게 문자열배열을만들고 (500자라고 했으니 크기500) 하나하나씩 반복문돌면서 검사해주는 식을 적었다. 중간에 공간이 없으면 -1을 반환하라고 했는데, 이는 홀수의 공간이 있으면 플래그를 세워서(불리언상수) -1을 출력하도록 만들었다.

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글