2024. 6. 19. 17:28ㆍIT/BaekJoon
문제 링크
https://www.acmicpc.net/problem/31823
문제
2034년, 국민대학교의 KPSC 동아리는 그 명성이 대단하여 국민대 자체보다도 KPSC가 더 유명해졌다.
이러한 명성 때문에 많은 사람들이 KPSC에 가입하고자 했으나, 동아리의 명성을 유지하기 위해 한정된 인원만 받고 나머지는 모두 탈락시켜 버렸다.
그러나 동아리에 들어온 후 프로그래밍 공부를 소홀히 하며 잠적하는 회원들이 생겨나기 시작했다.

이러한 상황을 목격한 부동아리장은 분노하여 '리버스-스트릭을 이용한 강퇴'라는 새로운 규칙을 도입하기로 했다. 여기서 '리버스-스트릭'이란, 문제를 며칠 연속으로 풀지 않았는지 보여주는 지표를 의미한다. 즉, 총 𝑥일 동안 연속해서 문제를 전혀 풀지 않았다면 '리버스-스트릭' 𝑥일이라고 한다.
부동아리장을 도와 동아리에 들어온 후 잠적하며 동아리 활동을 소홀히 하는 '악질' 회원들을 식별하는 데 도움을 주자!
입력
- 첫 번째 줄에는 KPSC 동아리원의 수 𝑁과 일별 활동 기록의 길이 𝑀이 주어진다. (1≤𝑁,𝑀≤200)활동기록은 𝑀개의 문자가 공백으로 구분되어 주어진다. 이중 𝑖번째 문자가 * 라면 𝑖번째 날에 문제를 풀었다는 것을, . 이라면 𝑖번째 날에 문제를 풀지 않았다는 것을 의미한다.
- 이름은 영어 소문자로만 이루어진 1글자 이상 10글자 이하의 문자열로 주어지며, 이름들 사이에는 중복이 없다.
- 다음 𝑁개의 줄에는 각 동아리원의 활동 기록과 이름이 공백을 두고 한 줄에 주어진다.
출력
첫 번째 줄에는 동아리원들의 최장 리버스-스트릭 중 서로 다른 값들의 개수를 출력한다.
다음 줄부터 각 동아리원의 최장 리버스-스트릭과 이름을 입력받은 순서대로 한 줄에 하나씩 출력한다. 여기서, '최장 리버스-스트릭'이란, 총 𝑀일 기간 내에 달성한 '리버스-스트릭' 중 가장 큰 값을 의미한다.

통과한 답안
using System.Text;
namespace _31823
{
internal class Program
{
static void Main(string[] args)
{
string[] inputs = Console.ReadLine().Split(' ');
int N = int.Parse(inputs[0]);
int M = int.Parse(inputs[1]);
StringBuilder sb = new StringBuilder();
HashSet<int> reverseCnt = new HashSet<int>();
for (int i = 0; i < N; i++)
{
string[] reverseStrig = Console.ReadLine().Split(' ').ToArray();
int maxCnt = 0;
int nowCnt = 0;
for (int j = 0; j < reverseStrig.Length - 1; j++)
{
if (reverseStrig[j] == ".")
{
nowCnt++;
}
else
{
nowCnt = 0;
}
if (nowCnt > maxCnt)
{
maxCnt = nowCnt;
}
}
reverseCnt.Add(maxCnt);
sb.AppendLine($"{maxCnt} {reverseStrig[M]}");
}
Console.WriteLine(reverseCnt.Count);
Console.WriteLine(sb);
}
}
}
동아리 인원과 활동 기록이 주어진 경우에
활동을 안한 최장 기록들을 구하는 문제이다.
우선 최장 리버스-스트릭 중 서로 다른 값들의 개수를 구하기 위해서
중복을 허용하지 않는 자료 구조인 HashSet을 이용했다.
또, StringBuilder를 이용해서 각각의 최장 리버스-스트릭과 이름을 저장한 후에
모든 인원을 순회한 후에 출력하도록 구현하였다.
'IT > BaekJoon' 카테고리의 다른 글
[BAEKJOON] 백준 25592: 바둑돌 게임 (C#) (0) | 2024.06.20 |
---|---|
[BAEKJOON] 백준 29732: Rick-Roll Virus (C#) (0) | 2024.06.20 |
[BAEKJOON] 백준 25595: 86 ─에이티식스─ 2 (C#) (0) | 2024.06.19 |
[BAEKJOON] 백준 15351: 인생 점수 (C#) (1) | 2024.06.19 |
[BAEKJOON] 백준 28281: 선물 (C#) (0) | 2024.06.19 |