반응형
[ 문제 ]
민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB
이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다.
폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오.
[ 코드 ]
1. 내 코드
- .을 기준으로 잘라주고 치환해준다.
만약 ....이렇게 되어있는건 빈 배열이 생성되는데 {" "," "," "," "," "}이렇게 배열이 생긴다고 보면된다!
.을 기준으로 으로 양옆으로 잘리기때문에 마지막 인덱스 빼고 원래 입력했던 .을 추가하기 위해 Append한다.
using System.Text;
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
string s = sr.ReadLine();
string[] arr = s.Split('.');
for (int i = 0; i < arr.Length; i++)
{
int length = arr[i].Length;
int aCount = length / 4;
int bCount = length % 4;
if (bCount % 2 != 0)
{
sb.Clear();
sb.Append(-1);
break;
}
else
{
sb.Append(new string('A', aCount * 4));
sb.Append(new string('B', bCount));
if (arr.Length - 1 > i)
{
sb.Append(".");
}
}
}
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
sr.Close();
2. 다른 사람 코드 참고
using System.Text;
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
string s = sr.ReadLine();
string result = "";
string A = "AAAA";
string B = "BB";
s = s.Replace("XXXX", A);
result = s.Replace("XX", B);
if (result.Contains("X"))
{
result = "-1";
}
sw.Write(result);
sw.Flush();
sw.Close();
sr.Close();
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1343
반응형
'Language > C#' 카테고리의 다른 글
[C#] 16435번 스네이크버드 (0) | 2024.03.18 |
---|---|
[C#] 백준 2828번 사과 담기 게임 (4) | 2024.03.17 |
[C#] 백준 14916번 거스름돈 (0) | 2024.03.16 |
[C#] 백준 1439 뒤집기 (0) | 2024.03.16 |
[C#] 백준 1789번 수들의 합 (0) | 2024.03.16 |