알고리즘 C#

백준 1316번 그룹 단어 체커 C#으로 문제 풀어보기

minsoungdev 2025. 9. 13. 12:35

안녕하세요 박민성입니다.

 

오늘은 백준 1316번 그룹 단어 체커를 풀어 보겠습니다.

문제를 보면 

입력은 첫째 줄에는 100보다 작거나 같은 단어의 개수 N이 들어옵니다. 둘째 줄부터 N 만큼에 단어의 개수가 한 줄씩 들어옵니다 단어는 알파벳 소문자로만 되어있고 중복되 않으며 길이는 최대 100입니다.

 

출력은 입력 둘재 줄부터 들어온 단어들 중 그룹 단어의 개수를 출력합니다.

그룹 단어는 단 문자가 연해서 이어지는 경우를 말합니다. aabbbfffff는 그룹 단어라고 할 수 있습니다. 하지만 연속되지 않고 나왔던 문자가 한번 더 나오는 경우 bbbbbffffb 이럴 경우 그룹 단어가 아니게 됩니다.

일단 단어의 개수를 변수 a에 받아주고 그룹 단어의 개수를 세어줄 변수 count 선언합니다.

그리고 for문을 사용하여 a만큼 반복해줍니다.

 

그리고 저는 이 문제를 보고 일단 한 글자씩 비교를 하면서 풀어 가려고 했습니다. 그러기 위해서 이미 나왔는지를 체크하기 위해서 딕셔너리를 사용해서 있는 건 true 없는 건 false로 저장하려고 했습니다. 그리고 전에 나왔던 게 같은지 확인은 char b를 통해 비교를 하고 b에 저장하고 그러려고 했습니다. 그리고 문자를 받고 한 개씩 비교를 위해서 변수 c와 그룹 단어인지 아닌지 그룹 단어면 count에 ++해줘야 하니 check라는 bool 변수도 만들었습니다.

그리고 이중 for문으로 단어 c의 길이만큼 반복을 하면서 if로 전 단어랑 같은면 이어지는 거이니 b 변수에 지금을 넣어주고 다시 반복합니다. 만약 다르다면 딕셔너리에 있는지 없는지 true인지 false인지 체크하고 없으면 그 값을 딕셔너리에 추가해 줍니다.

만약 있다면 이미 한번 나온 단어가 한번 더 나온 거이니 check를 false로 만들어주고 그 단어는 판별이 되었으니 break 해줍니다.

그리고 check가 true면 count값을 증가시켜줍니다.

마지막으로 count를 출력하면 끝입니다.

이것이 전체 코드입니다. 이렇게 백준에 제출하였더니 

정답이었습니다.