-
백준 1343번 : 폴리오미노(C 언어)c c++ 언어 공부 2023. 8. 22. 10:41
https://www.acmicpc.net/problem/1343
1343번: 폴리오미노
첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <stdio.h>#include <string.h>int main() {char arr[51] = { 0, };scanf("%s", arr);int len = strlen(arr);int flag = 0;for (int i = 0; i < len; i++){if ((len-3>=0) && arr[i] == 'X' && arr[i + 1] == 'X' && arr[i + 2] == 'X' && arr[i + 3] == 'X'){arr[i] = 'A';arr[i + 1] = 'A';arr[i + 2] = 'A';arr[i + 3] = 'A';}else if ((len - 1 >= 0) && arr[i] == 'X' && arr[i + 1] == 'X'){arr[i] = 'B';arr[i + 1] = 'B';}continue;}for (int i = 0; i < len; i++){if (arr[i] == 'X'){flag = 1;break;}}if (flag == 1){printf("-1");}else{for (int i = 0; i < len; i++){printf("%c", arr[i]);}}}cs 문제 설명:
민식이는 무한개의 폴리오미노 AAAA와 BB를 가지고 있습니다. 이제 주어진 보드판에 있는 'X'를 폴리오미노로 덮으려고 합니다. 'X'를 이용하여 폴리오미노를 덮을 수 있는데, '.'는 폴리오미노로 덮으면 안 된다는 규칙이 있습니다. 주어진 보드판을 모두 덮는 가장 사전순으로 앞선 방법을 찾아 출력해야 합니다.
입력:
- 첫째 줄에 보드판이 주어집니다. 보드판의 크기는 최대 50입니다.
출력:
- 첫째 줄에 사전순으로 가장 앞선 답을 출력합니다. 만약 덮을 수 없으면 -1을 출력합니다.
코드 설명:
이 코드는 주어진 보드판에 'X'를 폴리오미노로 덮는 문제를 해결하는 프로그램입니다.
- 먼저, arr 배열에 보드판을 입력받고, 입력받은 문자열의 길이를 len 변수에 저장합니다.
- 루프를 돌면서 arr 배열을 순회하며 'X'를 발견하면 주어진 폴리오미노 규칙에 따라 'A' 또는 'B'로 덮어씁니다. 이때, 인덱스 범위를 확인하여 배열 범위를 초과하지 않도록 합니다.
- flag 변수를 사용하여 'X'가 남아 있는지 확인하고, 'X'가 남아 있다면 -1을 출력합니다. 그렇지 않으면 덮어쓴 보드판을 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 1302번 : 베스트셀러 (C 언어) (0) 2023.08.23 백준 2822번 : 점수 계산(C 언어) (0) 2023.08.23 백준 11557번 : Yangjojang of The Year(C 언어) (0) 2023.08.22 백준 1233번 : 주사위 (0) 2023.08.21 백준 1236번 : 성 지키기 (0) 2023.08.21