티스토리 뷰

Algorithm/BOJ

백준 1316번 C++

poopooreum 2023. 7. 23. 11:16
반응형

백준 1316번 그룹 단어 체커
https://www.acmicpc.net/problem/1316

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net




정답 코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	//a = 97

	int N;
	scanf("%d", &N);

	int ans = 0;
	int chkArr[26];

	for (int i = 0; i < N; i++) {

		memset(chkArr, 0, sizeof(chkArr));
		char str[101];
		scanf("%s", str);
		int idx = 0;
		int chk = 1;
		while (1) {
			
			if (str[idx] == '\0') { break; }

			char c = str[idx];
			if (chkArr[c - 97] == 1) {			//이미 나온 경우
				if (str[idx - 1] != str[idx]) {		//바로 전 글자와 같으므로 그룹임
					chk = 0;
					break;
				}
			}
			else {
				chkArr[c - 97] = 1;			//나온 적 없는 경우 1로 바꿈
			}

			idx++;
		}
		
		if (chk == 1) ans += 1;


	}
	printf("%d", ans);


	return 0;
}


문제 풀이
각 문자가 연속해서 나타나는지를 출력하는 문제입니다. 카운팅 정렬을 이용하면 쉽게 풀 수 있습니다. 문자가 나오면 그 문자를 배열에 체크한 뒤 그 다음 문자도 똑같은 문자라면 계속해서 문장 끝까지 반복문을 돌립니다. 다른 문자라면 그 문자 역시 배열에 체크합니다. 그러나 그 문자가 이미 앞에서 나온 문자이고 이 문자의 앞 문자가 다른 문자이면 반복문을 종료시킵니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1357번 C++  (0) 2023.07.23
백준 1330번 C++  (0) 2023.07.23
백준 1312번 C++  (0) 2023.07.23
백준 1308번 C++  (0) 2023.07.23
백준 1271번 Python  (0) 2023.07.23
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함