반응형
[ 문제 ]
사파리 투어를 나선 건덕이는 얼룩말에 관심이 많았다. 특히 얼룩말의 몸통에 검은 줄이 많을수록 얼룩말이 아름답다고 생각했다.
건덕이는 얼룩말들의 털 상태를 0과 1로 기록한다. 0은 털이 흰 부분을, 1은 털이 검은 부분을 의미한다.
검은 줄의 개수는 연속하는 검은 부분의 개수이다. 예를 들어, 건덕이가 한 얼룩말의 털 상태를 01101110101로 기록했다면, 이 얼룩말은 4개의 검은 줄을 가지고 있다.
건덕이는 모든 얼룩말에 대한 털 상태를 기록해 두었다. 건덕이가 생각하기에 가장 아름다운 얼룩말은 몇 개의 줄을 가졌고, 그런 얼룩말이 총 몇 마리가 있을까?
[ 코드 ]
string[] input = Console.ReadLine().Split();
int N = int.Parse(input[0]);
int L = int.Parse(input[1]);
int maxStripes = 0;
int maxHorseCount = 0;
for (int i = 0; i < N; i++)
{
string s = Console.ReadLine();
string Remove = RemoveInput(s);
int Count = StripesCount(Remove);
if(Count > maxStripes)
{
maxStripes = Count;
maxHorseCount = 1;
}
else if(Count == maxStripes)
{
maxHorseCount++;
}
}
Console.Write($"{maxStripes} {maxHorseCount}");
int StripesCount(string s)
{
int Bstripes = 0;
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '1')
{
Bstripes++;
}
}
return Bstripes;
}
string RemoveInput(string s)
{
char c = s[0];
string result = c.ToString();
for (int i = 1; i < s.Length; i++)
{
if(c != s[i])
{
result += s[i];
c = s[i];
}
}
return result;
}
[ 풀이 ]
연속되는 같은 값은 제거하고 StripesCount함수에서 받아온 값과 비교해서 maxStripes와 같은 값일때 maxHorseCount 1씩 증가했다. 그렇지 않을때는 maxStripes를 최댓값으로 초기화해주고 maxHorseCount 을 1로 초기화해줬다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/30454
30454번: 얼룩말을 찾아라!
첫째 줄에 얼룩말의 개체수 $N$, 얼룩말의 몸통 길이를 나타내는 정수 $L$이 공백으로 구분되어 주어진다. $\left( 1\leq N,L\leq 1\, 000 \right)$ 이어지는 $N$개의 줄에 건덕이가 기록한 길이 $L$의 얼룩말
www.acmicpc.net
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 27159번 노 땡스! (1) | 2024.02.06 |
---|---|
[C#] 백준 27465번 소수가 아닌 수 (0) | 2024.02.06 |
[C#] 백준 30821번 별자리가 될 수 있다면 (이항계수) (0) | 2024.02.05 |
[C#] 백준 29720번 그래서 님 푼 문제 수가? (2) | 2024.02.04 |
[C#] 백준 30822번 UOSPC 세기 (0) | 2024.02.03 |